考虑以下简单代码:
我的问题是,当执行arrayOfObjects和someAsyncFunctionOnObj时,占用了过多的内存,因为循环不等待执行完成,而是对每个对象调用someAsyncFunctionOnObj(obj),并且等待所有对象都解决,但不必按顺序进行,这会导致OOM崩溃。我尝试使用递归异步函数来解决顺序问题,但仍然导致OOM崩溃。
我想要实现的流程是同步循环,也就是说:
有没有关于如何正确实现它的建议?
考虑以下简单的代码:
await Promise.all(arrayOfObjects.map(async (obj) => {
return await someAsyncFunctionOnObj(obj);
}));
我的问题是,当执行arrayOfObjects和someAsyncFunctionOnObj时,占用了过多的内存,因为循环不等待执行完成,而是对每个对象调用someAsyncFunctionOnObj(obj),并且等待所有对象都解决,但不必按顺序进行,这会导致OOM崩溃。我尝试使用递归异步函数来解决顺序问题,但仍然导致OOM崩溃。
我想要实现的流程是同步循环,也就是说:
await someAsyncFunctionOnObj(obj1); // wait for it to finish
await someAsyncFunctionOnObj(obj2); // wait for it to finish
...
有没有关于如何正确实现它的建议?
return await someAsyncFunctionOnObj(obj);
但如果使用Promise.all
,就不需要 async/await。或者只需await Promise.all(arrayOfObjects.map(someAsyncFunctionOnObj));
- dfsq