Парадигма использования для XHR
заключается в том, что вам не нужно беспокоиться о том, что происходит с объектом - движок браузера позаботится об этом за кадром.Поэтому я не вижу смысла пытаться «улучшить» вещи вручную.Разработчики браузеров, безусловно, знают, что 99,9999% программистов на JS этого не делают, поэтому они не только приняли это во внимание, но и, вероятно, оптимизировали для этого сценария.
Вам не следует беспокоиться об этом, если только выиметь конкретную проблему в ваших руках.
Что касается ограничения количества вызовов AJAX на домен (либо одновременных невыполненных вызовов, либо общего числа совершенных вызовов, либо любого другого показателя, который вас может заинтересовать), решением будетпочтенная классика CS: добавьте еще один уровень абстракции.
В этом случае дополнительный уровень абстракции будет функцией, через которую будут проходить все вызовы AJAX;Затем вы можете реализовать логику, которая отслеживает ход каждого вызова (для каждого домена, если вы этого хотите) и отклоняет или откладывает входящие вызовы на основе этого состояния.Это будет нелегко получить правильно, но это, безусловно, выполнимо.
Тем не менее, я предлагаю также не беспокоиться о этом до тех пор, пока у вас не возникнет конкретная проблема.:)
Обновление:
Браузеры применяют собственные ограничения для одновременных вызовов AJAX;здесь есть очень хороший вопрос: Сколько одновременных запросов AJAX (XmlHttpRequest) разрешено в популярных браузерах?
Кроме того, как упоминает TJ Crowder в комментариях: убедитесь, что вы несохраняя ссылки на объекты XHR, когда вы закончите с ними, чтобы их можно было собирать мусором - в противном случае вы создаете утечку ресурсов самостоятельно.
Второе обновление:
В блоге есть хорошая статья о повторном использовании XHR здесь - это фактически начало цепочки соответствующих сообщений.С другой стороны, он датирован и не приводит к практическим выводам.Но он хорошо описывает механизм повторного использования XHR.