簡體   English   中英

NodeJS SetImmediate和回調函數

[英]NodeJS SetImmediate and callback function

下面的代碼有效-但是在我將NODEJS從4 ..更新到6.9.1之后,它突然引發了錯誤(針對每個調用)...這意味着它完美地執行了所有遞歸調用,然后告訴我20倍以下的錯誤消息。 ..

“回調”參數必須是一個函數。

我發現了錯誤-一切正常。 它是一個遞歸調用-filterTrades。 我已經使用了很長時間了-以前從未遇到過問題。 該怎么辦? 我猜代碼使用不必要的資源來捕獲某些東西(實際上是不需要的)?

var id = setImmediate(filterTrades(rows, indexStart, indexEnd, offset));
clearImmediate(id);

@DaveNewton賺錢了-您可能想要

var id = setImmediate( () => filterTrades(rows, indexStart, indexEnd, offset) );
clearImmediate(id);

和es5方式

var id = setImmediate( function(){
    filterTrades(rows, indexStart, indexEnd, offset);
})
clearImmediate(id);

可能您應該將此代碼替換為

filterTrades(rows, indexStart, indexEnd, offset);

並且沒有setImmediate / clearImmediate。

  1. 在Node.js的早期版本上,像您正在執行的那樣使用非功能調用setImmediate不會執行任何操作。 然后,調用clearImmediate將無濟於事。 因此,要重現該行為,只需執行副作用(即調用filterTrades),但刪除所有setImmediate / clearImmediate東西。

  2. 即使在當前版本的Node.js上,例如@skav的答案提出的代碼也無濟於事。 如果設置立即數然后立即清除它,則意味着將永遠不會執行任何操作。 因此,@ skav的版本將完全刪除對filterTrades的調用; 這相當於完​​全刪除代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM