Rya*_*yan 0 javascript function settimeout
当我开始我的脚本时,我有这个:
var my_great_masterpiece = new function ()
{
var self = this;
Run Code Online (Sandbox Code Playgroud)
然后在我的脚本中我有这个:
response_xml: function ()
{
if (self.http_request.readyState == 4)
{
if (self.http_request.status == 404 && countXmlUrl <= 3)
{
countXmlUrl++;
self.realXmlUrl = xmlUrl[countXmlUrl];
self.request_xml();
}
if (self.http_request.status == 200)
{
self.xmlDoc = self.http_request.responseXML;
self.storage.setItem('domains_raw_xml', self.http_request.responseText);
self.main.peter_save_data();
self.timervar = setTimeout(function ()
{
// ########### Below line gives the error #############################
self.new_version_show_window();
}, 2000);
}
}
},
new_version_show_window: function ()
{
...
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
错误:self.new_version_show_window不是函数
我究竟做错了什么?
谢谢!
从您的代码中不清楚new_version_show_window定义的位置.也许你可以在self上明确定义它:
self.new_version_show_window = function () {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
代替.或者您可以在本地命名空间中定义它并直接在setTimeout调用中使用它:
self.timervar = setTimeout(function () {
new_version_show_window();
}, 2000);
Run Code Online (Sandbox Code Playgroud)
或者干脆:
self.timervar = setTimeout(new_version_show_window, 2000);
Run Code Online (Sandbox Code Playgroud)
由于闭包,外部函数中声明的变量在内部函数中也可用.
感谢您发布整个代码.new_version_show_window已定义this.main,因此您必须访问它:
self.timervar = setTimeout(function () {
self.main.new_version_show_window();
}, 2000);
Run Code Online (Sandbox Code Playgroud)