Mootools XHR-запрос: синхронный и / или цепочечный? - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть пара запросов XHR, которые обрабатываются классом запросов Mootools. Этот класс предлагает несколько вариантов для определения времени запросов. Что я делаю:

  1. XHR: данные почтовой формы
  2. XHR: обновить основную панель
  3. XHR: обновить подпанель

Конечно, запросы 2 и 3 должны ждать до завершения 1. Так что они запускаются в обработчике события onComplete. Однако класс Request предлагает параметры для обработки нескольких запросов XHR. Мой вопрос об этих двух:

  1. Опция link может быть установлена ​​на chain, чтобы «связать» их в цепочку или в качестве состояния Moo docs:

    Любые вызовы, сделанные для запуска во время выполнения запроса, будут объединены в цепочку и будут выполняться после завершения текущего запроса, один за другим.

  2. Опция async может быть установлена ​​на false, чтобы предотвратить выполнение последующих запросов. Согласно документам Moo:

    Если установлено значение false, запросы будут синхронизированы и браузер будет зависать во время запроса.

В чем разница между зависанием браузера? Какой из них я должен использовать для запроса нет. 1? Лучше делать это синхронно, так что я уверен, что пока что ничего не выполняется? А как насчет использования обоих, это имеет какой-то смысл?

Ответы [ 2 ]

4 голосов
/ 14 февраля 2012

хорошо.разница между link: chain и async: false проста.

первая аксиома - вы повторно используете ваш запрос и не создаете новый.даже если это не так, он может работать с асинхронным.например, если у вас есть async: false, то этот код:

new Request({async:false}).send();

// this one below will not run until the UI thread has finished
new Request({async:false}).send();

// nor will this
somefunc();

, если вы идете с цепочкой:

var req = new Request({link: "chain"});

req.send();
// this won't run until the previous request has completed:
req.send();
// this will run independently of the above and may finish first as
// they are not synchronous and this is a brand new instance.
new Request().send();
0 голосов
/ 14 февраля 2012

Связанные запросы являются асинхронными, когда один из них завершается, он запускает второй и т. Д., Поэтому вы можете иметь несколько запросов, не блокируя браузер всеми запросами одновременно.

Связанные запросы не замораживают ваш браузер.

...