NodeJS SetImmediate和回调函数

时间:2016-11-11 17:19:06

标签: javascript node.js setimmediate

下面的代码有效 - 但是在我将NODEJS从4 ..更新到6.9.1之后,它突然抛出一个错误(对于每个调用)...意味着它完美地执行所有递归调用,之后告诉我20次错误下面的消息......

  

"回调"参数必须是一个函数。

我发现了错误 - 每件事都运转良好。它是一个递归调用 - filterTrades。我这样使用它已经有很长一段时间了 - 以前从来没有遇到过这个问题。该怎么办?我猜代码使用不必要的资源来捕获一些东西(实际上并不需要)?

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

2 个答案:

答案 0 :(得分:0)

@DaveNewton是有钱的 - 你可能想要

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

和es5方式

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

答案 1 :(得分:0)

您可能应该用

替换此代码
filterTrades(rows, indexStart, indexEnd, offset);

并且没有setImmediate / clearImmediate。

  1. 在Node.js的早期版本中,使用非功能调用setImmediate就像你正在做的那样什么都不做。然后,调用clearImmediate将不会执行任何操作。因此,要重现该行为,只需执行副作用(即调用filterTrades),但删除所有setImmediate / clearImmediate东西。

  2. 即使在当前版本的Node.js上,也可以使用例如@ skav的回答什么都不做。如果你立即设置然后立即清除它,那意味着什么都不会执行。所以@ skav的版本将完全删除对filterTrades的调用;它相当于完全删除代码。