#jquery #ajax
#jquery #аякс
Вопрос:
У меня есть две функции, которые я создал
- work_order_rectify()
- update_work_order_info()
Оба содержат запросы AJAX внутри функций, и я пытаюсь заставить одну функцию работать после того, как вторая завершит все запросы AJAX. Первая функция может содержать 100 AJAX-запросов, выполняемых асинхронно внутри host_rectify()
и device_rectify()
. Вторая функция-это один AJAX-запрос. В поисках ответов — я вижу $.when().then()
$.when().done()
, что есть и, как предполагается, включает в себя функциональность .promise (). Но мои две основные функции, похоже, все еще работают одновременно? Должен ли я включать отложенные функции в функции?
Вот как выглядит мой файл .js
function work_order_rectify() { [...] $(future_hosts) .each(function() { host_rectify(host_rectify_button) }) $(filtered_future_devices) .each(function() { device_rectify(device_rectify_button) }) } function update_work_order_info( work_order, ) { $.ajax({ type: 'GET', headers: { 'X-CSRFToken': csrftoken, }, url: '/ajax/update_work_order_header/', dataType: 'json', data: { 'work_order': work_order, }, async: true, success: function(work_order_info) { [...do stuff...] }) } $.when(work_order_rectify()) .then(function() { update_work_order_info(work_order) })
Я пытаюсь заставить update_work_order_info()
сделать вызов AJAX после work_order_rectify()
завершения.
Комментарии:
1. $.когда потребности обещают функционировать. Ни одна из ваших функций не возвращает обещания в том виде, в каком они написаны в данный момент. Если бы они вернули обещание, $.когда не было бы необходимости.
work_order_rectify
необходимо довольно сильно переработать, чтобы сделать то, что вы хотите, предполагая, что функции, которые он вызывает, также асинхронны.2. Да, функции внутри
work_order_rectify()
используют асинхронность. Вы имеете в виду внутренниеwork_order_rectify()
потребностиreturn new Promise()
с моими функциями исправления внутри него?3. Да, ему нужно будет вернуть обещание, но это обещание нужно будет выполнить, когда будет выполнена вся работа, выполняемая функцией, а не где-либо еще.