我可以做这样的事情吗?
const array = ["foo", "bar", "hello", "etc"];
array.forEach(item => process(item)).then(() => {
//run after forEach is done processing the whole array
});
答案 0 :(得分:1)
不。然后用于处理承诺。 forEach是同步的,因此您可能应该将处理后的项目保存在一个新数组中,然后立即执行后处理逻辑。
答案 1 :(得分:1)
const values = ["foo", "bar", "hello", "etc"];
Promise.all(values.map(process)).then((results)=>{
//run after all promises are resolved
console.log(results instanceof Array); // prints true
});
您可以使用Promise.all()
来解析一个promise数组,并使用values.map(process)
对每个数组项作为参数执行process()
函数。
答案 2 :(得分:1)
如果您打算在forEach之后执行一些步骤,则可以按顺序执行步骤,因为(forEach是同步的)
执行第1行
const array = ["foo", "bar", "hello", "etc"];
第2行执行
array.forEach(item => process(item))
第3行执行
//Write your steps here to do after array.forEach