Node.js NodeJS setTimeout/setInterval回调作为字符串
据我所知,NodeJS不支持setTimeout/setInterval函数中字符串传递的回调。(例如setTimeout(“myfunc()”,100);) 是否有任何实现或任何其他解决方案来实现此功能?(例如,不要调用回调,只需评估它,等等)Node.js NodeJS setTimeout/setInterval回调作为字符串,node.js,timer,Node.js,Timer,据我所知,NodeJS不支持setTimeout/setInterval函数中字符串传递的回调。(例如setTimeout(“myfunc()”,100);) 是否有任何实现或任何其他解决方案来实现此功能?(例如,不要调用回调,只需评估它,等等) 我只是尝试加载做完全相同事情的原始网页,所以NodeJS会抛出异常。我建议的一种方法是: setTimeout(function(){ eval("myfunc()") }, 100); 编辑(处理作为参数传递的evalString) 只需将本机设
我只是尝试加载做完全相同事情的原始网页,所以NodeJS会抛出异常。我建议的一种方法是:
setTimeout(function(){
eval("myfunc()")
}, 100);
编辑(处理作为参数传递的evalString)
只需将本机设置超时替换为您的设置超时:
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;
}
测试它:
setTimeout('console.log(123)', 100);
setTimeout(function(a,b,c) {
console.log(a, b, c);
}, 100, 'aaa', 'bbb', 'ccc');
谢谢你的回复,但这并不是我所期望的。已经有类似setTimeout('myfunc()',0)的响应,因此我必须以某种方式将其转换为回调或eval传递的字符串。嗯,稍后将尝试,并让您知道答案,感谢您的回复!我仍然得到了意想不到的结果,虽然做的不多,但想法很好。你们想从某个网页获取整个js并在节点中执行它吗?听起来不是个好主意。。我并没有想过修补原来的功能,我太累了。谢谢,它很有魅力!
setTimeout('console.log(123)', 100);
setTimeout(function(a,b,c) {
console.log(a, b, c);
}, 100, 'aaa', 'bbb', 'ccc');