我發現似乎是MS AJAX庫與FireFox交互的一個錯誤 - 但也許我只是做錯了。我有一個腳本,看起來像這樣:Function.createCallback在FireFox中沒有正確傳遞上下文
dowork({ value: "some value", currentRetry: 0 });
// Try to connect at least 10 times, with a second in-between retries..
function dowork(request) {
if (request.currentRetry < 10) {
logMessage('currentRetry = ' + request.currentRetry + '; trying again in 1 second.');
request.currentRetry++;
var callback = Function.createCallback(dowork, { value: request.context, currentRetry: request.currentRetry });
setTimeout(callback, 1000);
}
else {
logMessage('Exceeded retries; currentRetry = ' + request.currentRetry);
}
}
換句話說,我試圖做一些事情,很可能週期性地失敗了,所以我要重新,比如說,10倍,與第二在兩者之間。我可以想出如何做到這一點的唯一方法是使用類似MS Ajax庫中的Function.createCallback位。
而這個正常工作中,比方說,IE 8和鉻2,即,它會產生以下輸出:
currentRetry = 0;在1秒內再次嘗試。
currentRetry = 1;在1秒內再次嘗試。
currentRetry = 2;在1秒內再次嘗試。
currentRetry = 3;在1秒內再次嘗試。
currentRetry = 4;在1秒內再次嘗試。
currentRetry = 5;在1秒內再次嘗試。
currentRetry = 6;在1秒內再次嘗試。
currentRetry = 7;在1秒內再次嘗試。
currentRetry = 8;在1秒內再次嘗試。
currentRetry = 9;在1秒內再次嘗試。
超過了重試次數; currentRetry = 10
然而,在FireFox(3.5預覽,在其它風味沒有測試它),則輸出是這樣的:
currentRetry = 0;在1秒內再次嘗試。 超過了重試次數; currentRetry = undefined
任何想法或者在解決方法或我做錯了什麼?
這是否修復了ASP.NET的更高版本?我[有一個問題](http://stackoverflow.com/questions/6768673/javascript-function-createcallback-called-50-times-when-i-use-addclass-removec)具有相同的功能,但我沒有明確地稱呼它。 – 2011-07-21 17:58:25