gpt4 book ai didi

javascript - 迭代昂贵的异步函数 - 内存限制、递归?

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:53 24 4
gpt4 key购买 nike

我遇到了一些问题,我认为这是关于在我的 Node.JS 服务器端应用程序中使用 Promise 的基本问题 - 不幸的是,尽管看到了其他类似的问题(我认为),但我不知道如何解决它。

基本上我的问题是这样的:我正在尝试检索一些外部数据,然后对其进行处理。数据很多,所以我必须一页一页地检索它。另外,考虑到数据的大小,当我耗尽内存并且服务器崩溃时,我的服务器无法一次执行多个调用/进程。在执行时我不知道需要检索多少页才能获取所有数据。

我尝试使用页数数组执行 forEach 循环,但这显然不起作用。例如:

pages = [1,2,3,4];
pages.forEach( function(pageNumber){
veryMemoryExpensiveFunctionRetrievingAndProcessingPage(pageNumber).then(
// handle the results);
})

(这里的行为是所有函数同步执行并且服务器内存不足)。

我被困在这里 - 我知道我需要多次同步执行该函数,但不知道从哪里开始这样做!我也尝试过递归,但这再次导致内存不足,因为每次调用都会添加到堆栈中。

最佳答案

当前一页完成时,您需要为每一页获得一个 promise ,而不是一次全部获得。即

function fetchAndProcessPages(i, handlePage) {
retrievePage(pages[i]).then(page => {
handlePage(page);
if (i+1 < pages.length) fetchAndProcessPages(i+1, handlePage);
});
}
fetchAndProcessPages(0, page => console.log(page));

关于javascript - 迭代昂贵的异步函数 - 内存限制、递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40975551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com