我有一个ajax功能,返回一个项目列表。然后我获取这些项目的一些定价信息。定价信息来自外部资源并且有点慢,所以我总是加载项目进行适当的DOM更改,然后获取价格。问题是我需要在价格调用之间延迟。我想要的是如下:
loadPricesDelayed
delay 5sec
loadPricesDelayed
delay 5sec
loadPricesDelayed
delay 5sec
loadPricesDelayed
我现在所拥有的是:
$.each(jsonObject, function (i, obj) {
***
loadPrices(obj.prod, obj.mfg);
***
}
function loadPrices(cardName, setName) {
if (outstandingPricesToFetch == 1)
setTimeout(function () { loadPricesDelayed(prod, mfg) }, 5000);
else {
outstandingPricesToFetch = 1;
loadPricesDelayed(prod, mfg);
}
}
var outstandingPricesToFetch;
function loadPricesDelayed(prod, mfg) {
****
}
(outstandingPricesToFetch在$ .each之前重置,以防止第一次获取延迟)
此代码产生以下内容
loadPricesDelayed
delay 5sec
loadPricesDelayed
loadPricesDelayed
loadPricesDelayed
我如何按预期打破延迟?
答案 0 :(得分:0)
请使用下面的代码,将延迟时间乘以得到所需的结果。
$.each(jsonObject, function (i, obj) {
***
loadPrices(obj.prod, obj.mfg,i);//**change**
***
}
function loadPrices(cardName, setName,i) {//**change**
if (outstandingPricesToFetch == 1)
setTimeout(function () { loadPricesDelayed(prod, mfg) }, 5000*i);//change
else {
outstandingPricesToFetch = 1;
loadPricesDelayed(prod, mfg);
}
}
var outstandingPricesToFetch;
function loadPricesDelayed(prod, mfg) {
****
}
上面的代码会在0,5,10,15,20秒触发loadPricesDelayed。