假設您有一個調用Web服務方法的Javascript函數。這樣web服務就完成並調用一個回調函數,結果就是這樣。將回調信息返回到原始調用函數
如何將結果返回到調用Web服務方法的原始函數中?基本上,我試圖「同步」異步調用。
更新:
這就是我想要做的事。我正在驗證基於Web服務的返回值。
$.validator.addMethod("zzz",
function(value, element) {
// Call web service function using ASP.NET Ajax.
// Get callback value to determine validity.
return this.optional(element) || ***return t/f based on validity***;
},
function(value, element) { return msg; }
);
所以我想我能做到這一點,而不是:
$.validator.addMethod("zzz",
function(value, element) {
$.ajax({
async: false
url: **** web service url ****
success: set t/f to validity var
});
return this.optional(element) || ***return t/f based on validity var***;
},
function(value, element) { return msg; }
);
除了這個事實,這將保證在地獄你的位置,你應該要麼'了'在第一未定義或具有輔助變種來檢查,因爲回調響應可能仍然是'null'和循環永遠不會結束。 – treznik 2010-05-07 14:46:02
絕對。我應該補充說,這個代碼不應該用於任何有用的產品。我只是爲了理論目的而寫它。 – coolnalu 2010-05-07 14:49:26
除了作爲一個*非常糟糕的主意*,這甚至不工作。在瀏覽器的JavaScript是*單線程*(目前,網絡工作者線程來了)。這意味着雖然GET將完成,並且瀏覽器的Javascript解釋器將排隊成功回調,因爲你有唯一的線程綁定在CPU燒寫的忙循環中,該回調將永遠不會執行,並且循環將永遠不會結束。此外,如果請求需要一段時間,你會得到可怕的「這個腳本需要太長時間」的消息(在IE上它是基於操作的,而不是基於時間的;即使IE應該忙 - 等待相當快)。 – 2010-05-08 13:09:08