Мой код выглядит следующим образом:Как я могу гарантировать выполнение jQuery Каждое утверждение перед продолжением?
$(".qtyfield").each(function (index) {
if (this.value != "" && this.value > 0) {
var fieldname = this.id;
countme = countme + 1;
var tmpProductID = fieldname.split("_")
var ProductID = tmpProductID[1];
var ShowPrice = $(this).closest('td').prev('td').text();
var Quantity = this.value;
ShowPrice = ShowPrice.replace("$", "");
isItemInCart(ProductID).done(function() {
if (isItemInCartVar) {
updateQuantityByProductID(ProductID, Quantity);
}
else {
addToCartWithQty(ProductID, ShowPrice, Quantity);
}
});
this.value = '';
}
});
мне нужно убедиться, что этот блок кода завершается (все Ajax звонки включены) перед выполнением каких-либо дальнейших заявлений.
Пару точек ..
isItemInCart
является функцией с Ajax вызововupdateQuantityByProductID
является функцией с помощью AJAX вызоваaddToCartWithQty
является функцией с помощью AJAX вызова- I не знаю, сколько предметов в каждой коллекции (оно может измениться)
Я видел здесь такие вещи довольно немного, но не совсем уверен, что мне нужно сделать, чтобы применить его к моему коду. Вы можете помочь? – TRaymond
Я попробую. кажется, что вы уже используете отложенные, так как 'isItemInCart' используется с 'done()'. теперь вы должны позволить другим функциям (updateQuantityByProductID, addToCartWithQty) вернуть обещание тоже, и направить их все в массив, как упоминалось в моем сообщении. если вам нужна дополнительная помощь, я бы попросил вас включить соответствующие части вашего сайта в jsfiddle? – schellmax
также обратите внимание, что вы должны сделать это только в том случае, если вашей архитектуре приложения действительно необходимо разделить этот процесс на разные функции на стороне клиента - в противном случае я бы рекомендовал использовать одно из других решений, размещенных здесь, обрабатывая все на стороне сервера (и возможно, добавить транзакции db) – schellmax