考虑下面简单的代码代码:等待异步函数完成内部地图
await Promise.all(arrayOfObjects.map(async (obj) => {
return await someAsyncFunctionOnObj(obj);
}));
我的问题是,arrayOfObjects,并someAsyncFunctionOnObj,在执行占用太多的内存,因为环没有按”等待执行完成,而是每次调用someAsyncFunctionOnObj(obj),并等待直到全部解决,而不是必需的顺序,这会导致OOM崩溃。 Iv'e尝试使用递归异步函数,它可以解决订单问题,但仍会导致OOM崩溃。
我要实现的是一个同步的循环流动,这意味着
await someAsyncFunctionOnObj(obj1); // wait for it to finish
await someAsyncFunctionOnObj(obj2); // wait for it to finish
...
如何正确地执行它有什么建议?
首先,它应该是'返回等待someAsyncFunctionOnObj(OBJ);'但你真的,如果你使用'Promise.all'不需要异步/ AWAIT。或者只是'等待Promise.all(arrayOfObjects.map(someAsyncFunctionOnObj));' – dfsq
@dfsq是的,我只是显示了基本概念。 – vrachlin
为什么你使用Promise.all当你想要链接它们? – Robert