У меня есть корзина для покупок, где пользователь может добавить больше предметов, изменить количество существующих элементов, удалить элементы и т. Д. Для каждого из этих действий я вызываю асинхронный вызов AJAX на сервер, чтобы обновить общую сумму заказа.Не запускайте запрос AJAX до тех пор, пока предыдущий не будет выполнен
Что происходит, если пользователь добавляет элемент (действие 1), я вызываю асинхронный вызов, а затем пользователь меняет количество другого элемента (действие 2), мне бы хотелось, чтобы ответ действия 2 показывал вверх. Поскольку эти вызовы асинхронны, возможно, самый последний ответ, который я получаю, является результатом действия 1, поэтому сумма заказа неверна.
Какой шаблон следует использовать для того, чтобы не запускать один и тот же вызов AJAX до тех пор, пока предыдущий не будет завершен?
Для уточнения:
Запросы AJAX, которые происходят те же самые. Скажем, я делаю это $ .get ('destination_url'). Мне просто нужно убедиться, что я не делаю того же запроса, пока предыдущий не будет выполнен/не выполнен.
Я думаю, что вы можете искать объекты обещания: см. ['.promise()'] (https://api.jquery.com/promise/). Вы можете счесть полезным изучить ['.done()'] (https://api.jquery.com/deferred.done/), ['.fail()'] (https: //api.jquery .com/deferred.fail /) и ['. always()'] (https://api.jquery.com/deferred.always/). – War10ck
Предлагаю вам взглянуть на следующую статью SO. Ответ jAndy - это то, что вы ищете. [Запросы ajax очереди с использованием jQuery.queue()] (http://stackoverflow.com/questions/4785724/queue-ajax-requests-using-jquery-queue) – MightyLampshade
Возможно, вам захочется блокировать другие параметры, когда задачи, связанные с выбранными выполняется, например, показывая счетчик или отключив другие параметры и т. д. – lshettyl