我在我的node.JS服務器端應用程序中使用Promise時遇到了一些問題,但很遺憾,我看不到如何解決它,儘管看到了其他類似的問題(我認爲)。迭代昂貴的異步函數 - 內存約束,遞歸?
基本上我的問題是這樣的: 我想檢索一些外部數據,然後處理它。有很多數據,所以我必須逐頁檢索它。此外,考慮到數據的大小,我的服務器無法一次執行多個調用/進程,因爲內存不足和服務器崩潰。我不知道直到執行時間爲了獲取所有數據,我必須檢索多少頁。
我已經嘗試執行一個forEach循環與頁數的數組,但是這顯然不起作用。例如: -
pages = [1,2,3,4];
pages.forEach(function(pageNumber){
veryMemoryExpensiveFunctionRetrievingAndProcessingPage(pageNumber).then(
// handle the results);
})
(這裏的行爲是所有功能執行同步,服務器運行的內存)。
我在這裏很卡住 - 我知道我需要同時多次執行該功能,但不知道從哪裏開始這樣做!我也嘗試過遞歸,但是這又會導致內存不足,因爲每次調用都會添加到堆棧中。
聽起來像你需要努力優化你的服務器端解決方案,而不是客戶端。 –
嗨,抱歉 - 我應該澄清,這是一個node.js服務器端應用程序 - 我從外部服務檢索數據,修改它並將其插入到我自己的數據庫中。我只能檢索分頁加上我自己的服務器似乎只能在內存中保存一定數量的頁面而不會崩潰。因此,我想強制在自己的服務器端連續處理頁面 –
@JDeane首先:http://www.codexpedia.com/javascript/increasing-the-memory-limit-in-node-js/ – Niezborala