-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,但这个答案使用函数创建打破封闭,东西,我不能在这里做。