我有一個ajax函數返回一個項目列表。然後我會獲取這些物品的一些定價信息。價格信息來自外部資源,速度有點慢,所以我總是加載這些項目來進行適當的DOM更改,然後獲取價格。問題是我需要延遲價格通話。我要的是如下:setTimeout與一堆函數調用
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得到重置前$。每防止延遲上的第一次提取)
這代碼結果如下
loadPricesDelayed
delay 5sec
loadPricesDelayed
loadPricesDelayed
loadPricesDelayed
我該如何按預期打破延遲?
您是否需要**在各種調用之間延遲5秒鐘,還是隻是爲了讓數據有足夠的時間來處理?因爲如果你只是想確保數據在**函數後返回**,你將受益於**回調** :) –
或者使用[promise](https://api.jquery.com/promise /)鏈。 jQuery有它內置的,或者你可以使用一個單獨的庫,如[藍鳥](http://bluebirdjs.com/docs/getting-started.html)。 – Laoujin
由於來自外部資源的需求而特別創建延遲。我們已經從他們的CDN觸發DDOS保護的大樣本集 –