Javascript setInterval和`this`解决方案
我需要this
从setInterval
处理程序访问
prefs: null,startup : function()
{
// init prefs
...
this.retrieve_rate();
this.intervalID = setInterval(this.retrieve_rate, this.INTERVAL);
},
retrieve_rate : function()
{
var ajax = null;
ajax = new XMLHttpRequest();
ajax.open('GET', 'http://xyz.com', true);
ajax.onload = function()
{
// access prefs here
}
}
如何在中访问this.prefs ajax.onload
?
回答:
setInterval行应如下所示:
this.intervalID = setInterval( (function(self) { //Self-executing func which takes 'this' as self
return function() { //Return a function in the context of 'self'
self.retrieve_rate(); //Thing you wanted to run as non-window 'this'
}
})(this),
this.INTERVAL //normal interval, 'this' scope not impacted here.
);
:相同的原则适用于“
onload
”。在这种情况下,“外部”代码几乎不做任何事情,它只是建立一个请求,然后发送它。在这种情况下,不需要上面代码中的额外功能。您的retrieve_rate应该看起来像这样:-
retrieve_rate : function(){
var self = this;
var ajax = new XMLHttpRequest();
ajax.open('GET', 'http://xyz.com', true);
ajax.onreadystatechanged= function()
{
if (ajax.readyState == 4 && ajax.status == 200)
{
// prefs available as self.prefs
}
}
ajax.send(null);
}
以上是 Javascript setInterval和`this`解决方案 的全部内容, 来源链接: utcz.com/qa/410733.html