-1
這是一個非常簡化的代碼片段來說明問題。解決異步調用中的範圍關閉問題
var srcs = ["url1", "url2", "url3"];
for (var i = 0; i < srcs.length; i++) {
var img = document.createElement("img");
var tryBrokeClosure = i;
img.onload = function() {
console.log(tryBrokeClosure);
};
img.src = srcs[i];
}
正如你可能猜到了,我期待:
不過的了:
所以我的問題是:我怎樣才能安全地將i
變量傳遞給異步函數而不會被原始範圍改變?
編輯:
我有這個answer一個非常相似question,但這個答案使用函數創建打破封閉,東西,我不能在這裏做。