下面的代码有效 - 但是在我将NODEJS从4 ..更新到6.9.1之后,它突然抛出一个错误(对于每个调用)...意味着它完美地执行所有递归调用,之后告诉我20次错误下面的消息......
"回调"参数必须是一个函数。
我发现了错误 - 每件事都运转良好。它是一个递归调用 - filterTrades。我这样使用它已经有很长一段时间了 - 以前从来没有遇到过这个问题。该怎么办?我猜代码使用不必要的资源来捕获一些东西(实际上并不需要)?
var id = setImmediate(filterTrades(rows, indexStart, indexEnd, offset));
clearImmediate(id);
答案 0 :(得分:0)
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。
在Node.js的早期版本中,使用非功能调用setImmediate就像你正在做的那样什么都不做。然后,调用clearImmediate将不会执行任何操作。因此,要重现该行为,只需执行副作用(即调用filterTrades),但删除所有setImmediate / clearImmediate东西。
即使在当前版本的Node.js上,也可以使用例如@ skav的回答什么都不做。如果你立即设置然后立即清除它,那意味着什么都不会执行。所以@ skav的版本将完全删除对filterTrades的调用;它相当于完全删除代码。