當使用第三方庫(如jQuery)時,我一直使用回調,但是我遇到了需要設置自己的回調的問題。通過上課「mainRow」的所有錶行如何對javascript中的用戶函數執行自定義回調
// Get All Rates
function getAllRates() {
$('#shiplist tr.mainRow').each(function() {
var curid = $(this).attr("id");
var cursplit = curid.split("_");
var shipid = cursplit[1];
getRate(shipid);
});
}
這種迭代,並且每個主行都有ID爲「出貨_ #####」,讓每一行它分裂:就拿我當前的代碼通過_得到實際的船舶ID,然後它使用calla「getRate」函數向使用UPS或USPS API的服務器發送ajax呼叫以獲得給定貨物的費率。
這適用於UPS所有行立即開始加載並單獨返回它們的費率。 Stamps.com現在面臨的問題是,他們使用經過驗證的肥皂對話,因此需要從第一次呼叫接收驗證字符串,並在下一次呼叫中使用,等等。
所以基本上我需要修改上面的函數來執行「getRate()」函數並在執行下一次迭代之前等待它完成。
任何人都知道我可以如何做到這一點與大量的大驚小怪?
編輯 - 在這個問題Clearification被問:
我要採取以下功能:
的getRate(shipid);
和訪問它像這樣:
的getRate(shipid,函數(shipList){_Function_data_here_});
當我定義getRate函數時,如何定義它以使其具有回調能力?這是如何運作的?
你上面的每個循環都應該等待getRate在迭代之前完成。你可能想爲Stamps.com做的事情是讓getRate返回可以存儲在一個變量中並在下一次迭代期間發送的驗證字符串 – MrOBrian 2012-07-14 00:10:27
除了所有的東西,你需要看看['。.on()']( http://api.jquery.com/on/)或['$ .delegate()'](http://api.jquery.com/delegate/)(而不是['$ .live()']( http://api.jquery.com/live/),這是不贊同和非常低效的)。 – 2012-07-14 00:11:04
我的系統已經執行了認證程序,但問題是多個正在同時執行。我需要知道如何「等待」或在下一次迭代中回調。我寧願不使用同步阿賈克斯,但我想我會如果我必須。 – SublymeRick 2012-07-14 00:15:40