FacebookのAPIを呼び出してデータを取得するforeachループを作成しました。しかし、呼び出し回数が多すぎるため、JavaScriptの最大呼び出しスタックサイズを超えてエラーが発生し、そこで停止します。 私は5分後または修正された時間間隔の後に各反復の実行を遅らせることを考えていました。 私はthis questionから助けを得ました。今私は知りたい、JavaScriptの呼び出しスタックをクリアするかどうかの時間間隔の後に各繰り返しを実行していますか?forループの次の繰り返しを遅らせるとJavaScript呼び出しスタックがクリアされますか?
コード:
var updateFeeds = function(){
db.collection("accounts").find({"status": "live"}).toArray(function(err, clients) {
var interval = 10 * 1000;
var i = 0;
clients.forEach(function(client, index, array){
setTimeout(function (i) {
i++;
****code*****
}, interval * i, i);
});
各クライアントのコード内のほとんど5000要求コールがあります。私は各繰り返しの完了後にJavaScriptヒープメモリをクリアしたいと思います。
Error: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
Aborted (core dumped)
_whatを使用するようにしてください。はい、より良いソリューションがありますが、答えにあなたのコードコンテキストを置かなければなりません。 – Jai
@Jai質問を誤解して申し訳ありません。ループの実行を解除すると、コールスタックがクリアされるかどうかを尋ねたいだけでしたか? –
@DEVELOPERまあ、あなたのコードを見せてください...私はAPI呼び出しが非同期であると仮定しますので、呼び出しを遅らせる必要はありません – Cristy