var arr = ["node.js", "Java", "C#"];
var newArr = [];
let promise = new Promise((resolve, reject) => {
for(let i = 0; i < arr.length; i++) {
setTimeout(() => {
newArr.push(arr[i])
resolve(newArr);
}, 1000);
}
});
promise
.then(result => {
alert(result);
}
);
现在它会在第一次循环后提醒数据。如何在通过整个循环后显示带有 Promise 的异步操作的数据?
期望的行为:以异步模式将数据添加到 newArr,并在循环结束后显示它。
最佳答案
您需要与promise all有多个 promise
const myPromises = [];
for (let i=0; i<5; i++) {
myPromises.push(new Promise((resolve, reject) => {
setTimeout(() => {
console.log("done", i);
resolve(i)
} , i*500);
}));
}
Promise.all(myPromises).then(values => {
console.log("All: ", values)
});
关于javascript - 如何在循环中Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46290407/