nodejs超出最大的調用棧錯誤問題解決方法
來源:懂視網
責編:小采
時間:2020-11-27 20:08:41
nodejs超出最大的調用棧錯誤問題解決方法
nodejs超出最大的調用棧錯誤問題解決方法:本文主要介紹了nodejs超出最大的調用棧錯誤問題,需要的朋友可以參考下,希望能幫助到大家。程序實現的代碼大致如下function modify(cursor) { cursor.hasNext(function(err,bool) { if(err) { return console.log(err); }
導讀nodejs超出最大的調用棧錯誤問題解決方法:本文主要介紹了nodejs超出最大的調用棧錯誤問題,需要的朋友可以參考下,希望能幫助到大家。程序實現的代碼大致如下function modify(cursor) { cursor.hasNext(function(err,bool) { if(err) { return console.log(err); }

本文主要介紹了nodejs超出最大的調用棧錯誤問題,需要的朋友可以參考下,希望能幫助到大家。
程序實現的代碼大致如下
然后讓它慢慢跑吧,可是一個令我郁悶的事情發生了。當游標跑到接近500萬的時候,程序崩了,提示Uncaught RangeError: Maximum call stack size exceeded
竟然告訴我爆棧了,什么情況? 哎,排查代碼,開始填坑。發現我上面遞歸調用了modify() ,而且遞歸次數有點小多(1000多萬條記錄的表啊),可能是函數不斷的遞歸調用導致它的調用棧不斷的增加,然后越來越大,最終就沒有然后了,爆棧了。看來得給個機會讓node進行垃圾回收一下,要想讓它有機會垃圾回收那就只得終結一下遞歸啊。使用系統的setTimeout();來跳出遞歸調用棧吧。
代碼修改如下
在跑一下試試。。ok,好使了。但是運行有點慢啊,因為我每次都讓它跳出遞歸調用棧了。這樣雖然沒問題但是沒必要,因為400多萬才會出現爆棧呢。加個計數器吧,等調用棧有點大的時候在跳出來。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
nodejs超出最大的調用棧錯誤問題解決方法
nodejs超出最大的調用棧錯誤問題解決方法:本文主要介紹了nodejs超出最大的調用棧錯誤問題,需要的朋友可以參考下,希望能幫助到大家。程序實現的代碼大致如下function modify(cursor) { cursor.hasNext(function(err,bool) { if(err) { return console.log(err); }