- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遇到了一些问题,我认为这是关于在我的 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/
我正在阅读 MongoDB,并试图了解它的最佳用途。我没有看到明确答案的一个问题是哪些操作便宜或昂贵,以及在什么条件下。 你能帮忙澄清一下吗? 谢谢。 最佳答案 人们经常声称 mongodb 的写入速
我正在寻找一个主要来源(或一个非常好的解释)来支持在为 iPhone 编写软件时使用 autorelease 是危险的或过于昂贵的说法。 许多开发者都提出了这种说法,我什至听说 Apple 不推荐它,
我意识到这离微优化领域太远了,但我很想知道为什么调用 DateTime.Now 和 DateTime.UtcNow 如此“昂贵”。我有一个示例程序,它运行几个场景来做一些“工作”(添加到一个计数器)并
我是一名优秀的程序员,十分优秀!