在for循环中使用Javascript承诺
问题描述:
我对承诺的总数为n00b,并希望更多地使用它们,但需要一点帮助。正确在for循环中使用Javascript承诺
for (var key in list){
DoSomething(list[key])
.then(function(){
console.log(key);
});
}
function DoSomething(item){
return new Promise(function(resolve, reject){
resolve();
});
}
的console.log(key)
部分不会工作,因为变量key
在外侧范围改性:取代码下面的示例。一种解决方法可能是resolve
承诺key
值,但不幸的是,DoSomething方法是共享库的一部分。
for (var key in list){
DoSomething(list[key], key)
.then(function(key){
console.log(key);
});
}
function DoSomething(item, key){
return new Promise(function(resolve, reject){
resolve(key);
});
}
是否有任何其他方式让for循环console.log(key)
正常工作?
答
使用让,而不是变种,它会用 “让” 应该做的工作工作
let list = {a:1, b:2};
for (let key in list){
DoSomething(list[key])
.then(function(){
console.log(key);
});
}
function DoSomething(item){
return new Promise(function(resolve, reject){
resolve();
});
}
... –