在Node应用程序中,我需要以同步方式遍历某些项目,但是循环内的某些操作是异步的。我的代码现在看起来像这样:
someAPIpromise().then((items) => {
items.forEach((item) => {
Promise.all[myPromiseA(item), myPromiseB(item)]).then(() => {
doSomethingSynchronouslyThatTakesAWhile();
});
}
}
这可以弄清楚何时items
是由1组成的数组。但是,一旦有多个项目,promise.all()
将立即为该数组中的每个项目触发,而无需等待循环中的操作结束。
这么说…我如何确保数组中每个项目的整个操作都同步运行(即使某些操作是异步的并返回了Promise)?
非常感谢!
ñ
好的…我们能够使其工作的方式:在Promises的帮助下array.reduce()。最终结果:
myAsyncAPIcall.then(items => {
items.reduce((current, nextItem) => {
return current.then(() => {
return new Promise(res => {
Promise.all([myPromiseA(nextItem), myPromiseB(nextItem]).then(() => {
someSynchronousCallThatTakesAWhile(nextItem);
res();
}).catch(err => {
console.log(err);
});
});
});
}, Promise.resolve())
})
它的工作方式是,通过将数组的每个项目包装在自己的Promise(resolve,reject)中,我们可以确保每次迭代都同步运行,因为一次迭代的完成将触发解决下一个Promise的需求,并且等等等等。在每个promise解决方案中,只要知道调用只能在父promise范围内,直到调用完成,就可以根据需要异步启动所有调用。
希望对大家有帮助!
一小段python代码: 三个函数的结构类似 我的需求:f1 ,f2,f3这三个函数,无论哪个函数在运行中触发了except,那么当前循环立即中断,进入下一个循环。 请问,如何达到这个需求?
foreach循环遍历列表值并将控制变量(var)依次设置为列表的每个元素 - 语法 (Syntax) Perl编程语言中foreach循环的语法是 - foreach var (list) { ... } 流程图 (Flow Diagram) 例子 (Example) #!/usr/local/bin/perl @list = (2, 20, 30, 40, 50); # foreach lo
编辑:下面是list_item_view.xml
除了前面介绍的几种循环语句外,C# 同样也支持 foreach 循环,使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下: foreach(数据类型 变量名 in 数组或集合对象){ 语句块; } foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到 里定义的变量中,直到所有元素都成功取出后退出循环。 【示例】使用 foreach 循环
本文向大家介绍C# Foreach循环,包括了C# Foreach循环的使用技巧和注意事项,需要的朋友参考一下 示例 foreach将迭代实现的类的任何对象IEnumerable(请注意IEnumerable<T>从其继承的对象)。此类对象包括一些内置对象,但不限于:List<T>,T[](任何类型的数组),Dictionary<TKey, TSource>以及诸如IQueryable和IColl
Perl 循环 Perl foreach 循环用于迭代一个列表或集合变量的值。 语法 语法格式如下所示: foreach var (list) { ... } 流程图 Perl 循环