我现在已经挣扎了几天,我发现有关同步请求的良好读数,但我的代码仍然没有运气。我在ajax和
中使用速记帖子请求async:false
已弃用。我正在使用甚至承诺和功能,但我对我的代码没有任何影响。
以下是我正在做的ajax请求示例
arr = GetIdAndValueOfTextElement(); //This is a function
var getCost = GetAverageItemCost(itemId, fDate, lDate);
$.when(
getCost
).then(function (cost1) {
loopUsingSyncCall(cost1,arr);
});
function loopUsingSyncCall(cost1,arr) {
let PromiseArr = arr.map(function (resource) {
var arrReq = [];
var splitCost = $('.itemCost').html().split(' ');
var ID = getIdAndSplit(resource.id);
itemId = $('#hiddenItemID').val();
var MrkUpselector = "#Mrk-" + ID;
var PriceSelector = "#Prc-" + ID;
var price = getPrice(cost1, $(MrkUpselector).val());
$(PriceSelector).val(parseFloat(price));
$("#icn-" + ID).empty();
$("#icn-" + ID).html('<i class="fa fa-circle-o-notch fa-
spin" aria-hidden="true"></i>');
var dfd = savePriceArray("#icn-" + ID, ID, itemId,price);
$.when(dfd).done(function (res) {
console.log(res);
});
}
然后,这是在服务器中处理所有数据的功能
function savePriceArray (id, pgId, itemId, price,count,arr) {
arrayOfDeffereds.push( $.post(self.baseUrl + self.srvSavePrice, {
PriceGroupId: pgId, ItemId: itemId, Price: price }, function (data)
{
if (data.Data.result == true)
{
$(id).html('<i class="fa fa-check" aria-hidden="true"
style="color: #00a65a"></i>');
$(id + " i").fadeOut(3000);
}
})
);
return arrayOfDeffereds;
}
一切运行顺利,但仍以异步方式运行,并且不会更新我的数据库。有人可以编辑或帮助我吗?我是$.when
的新人,所以请耐心等待。提前谢谢