NodeJS setTimeout / setIntervalcallback作为一个string

据我所知,NodeJS不支持通过setTimeout / setInterval函数中的string传递的callback。 (例如setTimeout(“myfunc()”,100);)

有没有实施或任何其他解决scheme,使这项工作? (例如,而不是调用callback,只是评估它等)。我只是试图加载原始的网页,做了完全一样的事情,所以NodeJS只是抛出exception。

只需将setTimeoutreplace为您的setTimeout即可:

setTimeout = timeoutWrapper(setTimeout); function timeoutWrapper(origSetTimeout) { var win = typeof global !== 'undefined' ? global : window; function _setTimeout(fn) { var code; if(typeof fn === 'string') { code = fn fn = function wrapEval() { eval(code); }; } arguments[0] = fn; origSetTimeout.apply(win, arguments); } return _setTimeout; } 

testing它:

 setTimeout('console.log(123)', 100); setTimeout(function(a,b,c) { console.log(a, b, c); }, 100, 'aaa', 'bbb', 'ccc'); 

我可以build议的一个方法是:

 setTimeout(function(){ eval("myfunc()") }, 100); 

编辑 (处理作为parameter passing的evalString)

 function callMe(evalString){ return function(){eval(evalString);} } setTimeout(callMe('myFunc()'), 100);