Javascript 如何解决';TypeError:Property'_onTimeout';对象#<;对象>;不是一个函数';在节点中?
以下代码片段:Javascript 如何解决';TypeError:Property'_onTimeout';对象#<;对象>;不是一个函数';在节点中?,javascript,node.js,Javascript,Node.js,以下代码片段: var theAdNets = new Array(); function populateAdNetList() { } //update the list every 5 minutes. setInterval("populateAdNetList()",300000); //fetch it in 5 seconds. setTimeout("populateAdNetList();",5000); 产生以下错误: TypeError: Property '_o
var theAdNets = new Array();
function populateAdNetList() {
}
//update the list every 5 minutes.
setInterval("populateAdNetList()",300000);
//fetch it in 5 seconds.
setTimeout("populateAdNetList();",5000);
产生以下错误:
TypeError: Property '_onTimeout' of object #<Object> is not a function
at Timer.callback (timers.js:83:39)
TypeError:对象的属性“\u onTimeout”不是函数
在Timer.callback(timers.js:83:39)
populateAdNetList()是一个函数而不是一个对象。函数()的主体中没有对“this”的引用{}。为什么会发生这种情况?简单地尝试一下
setInterval(populateAdNetList,300000);
//fetch it in 5 seconds.
setTimeout(populateAdNetList,5000);
您必须将函数传递给
setInterval
。不是字符串,也不是函数的结果(直到它也是函数)。正确的语法:
setInterval(populateAdNetList, 300000);
setTimeout(populateAdNetList, 5000);
这很可能是一个范围问题。如果函数是在函数或对象中本地定义的,那么它在将计算字符串的全局范围中不可用 将函数移到全局作用域,或在调用中使用函数引用,以避免作用域问题:
//update the list every 5 minutes.
setInterval(populateAdNetList,300000);
//fetch it in 5 seconds.
setTimeout(populateAdNetList,5000);
这是不对的。字符串是
setTimeout
方法的有效第一个参数,它实际上是原始形式。后来添加了同时使用函数的功能。@Guffa我知道这个注释已经有5年了,但到目前为止,节点中的setTimeout()
不接受第一个参数的字符串。