Можно ли сделать асинхронные и синхронизирующие запросы xhr на одной странице?
Привет. Я использую jQuery Mobile для питания страницы, и то, как настроена библиотека, она захватывает каждую ссылку на странице и делает их асинхронными. Я не хочу, чтобы JQM вмешивался в исходящие ссылки. Пока что установка
$.mobile.ajaxEnabled = false
прекрасно работать. Проблема в том, что мне нужно делать асинхронные запросы через определенный промежуток времени. Отключение ajax-запросов означает, что страница блокируется на время этих интервалов. Плохие новости для тех, кто работает в медленных сетях или если сервер не отвечает достаточно быстро.Что я уже пробовал:
Чтобы обойти это, я попробовал использовать
$.get('/livePercentage/live') .then(function(data) { $.mobile.ajaxEnabled = false; // disable it so jqm doesn't tie up our outbound links assignPerc(JSON.parse(data)); }) // subsequent .then(() => setInterval(function() { $.mobile.ajaxEnabled = true; $.get('/livePercentage/live') .then(function(data) { $.mobile.ajaxEnabled = false; assignPerc(JSON.parse(data)); }); },1000*60*4));
Но все стало намного, намного хуже. По сути, я пытаюсь приостановить синхронизацию всякий раз, когда собираюсь запустить асинхронный запрос, а затем возобновить его после этого. Я не думаю, что кто-то будет нажимать исходящие ссылки, пока продолжаются фоновые запросы.
Приведенный выше фрагмент кода замораживает страницу примерно на целых 4 минуты (что может быть связано с 4-минутным интервалом функции setInterval. Возможно ли предотвратить вмешательство со стороны jqm, все еще позволяя пользователю взаимодействовать?
nmeri17
Sorry, I didn’t mean synchronous Ajax requests. What I intend to make is regular requests/page navigation (instead of the preventdefault they’re using to hijack my links after their Dom manipulations). If I click on “/Xxx”, I want to leave the current page and go to mysite/xxx rather than jqm loading “/xxx” asynchronously. The only links I want jqm to attach events to are page anchors like “#section5” but there’s no way I know of to do specify links to it. It automatically prevents default on all links and tries loading them asynchronously. I can’t remove the listeners on these links because they’re anonymous so my best bet is to disable asynchronous altogether.
Проблема с этим подходом заключается в том, что мне трудно перезапускать и повторно приостанавливать асинхронность.