gpt4 book ai didi

Promise 的 JavaScript 作用域陷阱

转载 作者:行者123 更新时间:2023-11-30 15:58:24 25 4
gpt4 key购买 nike

我有一个数组 B 包含这样的单词

B = ['你好', '爱', '和平']

我正在尝试创建一个 Promise 数组 P:

for(var i = 0; i<B.length; i++){
var line = B[i];
var p = new Promise(function(resolve, reject){
setTimeout(function(){
resolve(line)},2000
);
})
P.push(p);
}

Promise.all(P).then(function(data){
console.log('data',data);
})

我希望数组 data 等于 ['hello', 'love', 'peace'] 但实际上 data = ['peace', 'peace', 'peace']

我阅读了一些关于 JavaScript 作用域陷阱的文章,但仍然不知道如何修复我的代码。

请帮帮我。提前致谢

最佳答案

如果你使用es6,你的代码可能是这样的

let B = ['hello', 'love', 'peace'];

let P = [];

for(var i = 0; i<B.length; i++){
let line = B[i];
let p = new Promise(function(resolve, reject){
setTimeout(function(){
resolve(line)
},2000);
})
P.push(p);
}

Promise.all(P).then(function(data){
console.log('data',data);
})

如果你使用 es5,你应该在函数 p 中 var line = B[i];

关于Promise 的 JavaScript 作用域陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38136736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com