Javascript 从方法引用捕获带有回调函数的
我有一个像这样的区间函数-Javascript 从方法引用捕获带有回调函数的,javascript,ajax,setinterval,Javascript,Ajax,Setinterval,我有一个像这样的区间函数- setInterval(function(){ var postData = {'some json data'}; var successCallback = function(data) { console.log(data); } var errorCallback = function(data) { console.log(data); } Rest
setInterval(function(){
var postData = {'some json data'};
var successCallback = function(data) {
console.log(data);
}
var errorCallback = function(data) {
console.log(data);
}
RestClient.invokeRemoteService(postData, this.successCallback, this.errorCallback);
}, 10000);
这是我的invokeRemoteService()
方法,位于RestClient
(位于另一个文件中)——
但是,当我从setInterval()
方法调用RestClient.invokeRemoteService()
方法时,我总是在label-1
、label-3
和label-5
处为successCallback
和errorCallback
获取“未定义”信息。
虽然服务调用做得很好,我在
label-2上得到了正确的数据。RestClient.invokeRemoteService()可以很好地用于其他应用程序。但是当我从
setInterval()`调用它时,它不起作用。请提供帮助。不需要此
,您的成功回调
和错误回调
直接在范围内
setInterval(function(){
var postData = {'some json data'};
var successCallback = function(data) {
console.log(data);
}
var errorCallback = function(data) {
console.log(data);
}
RestClient.invokeRemoteService(postData, successCallback, errorCallback);
}, 10000);
谢谢,这很有效!。但由于我是javascript新手,我无法理解为什么我使用“this”时它不起作用。请您解释一下。this
用于访问函数调用方上下文。大多数情况下,它是全局上下文(窗口
),如果函数是对象方法,则该对象实例。在您的例子中,您试图引用作用域/闭包中的变量,这是在不使用this
的情况下直接完成的。看到和
setInterval(function(){
var postData = {'some json data'};
var successCallback = function(data) {
console.log(data);
}
var errorCallback = function(data) {
console.log(data);
}
RestClient.invokeRemoteService(postData, successCallback, errorCallback);
}, 10000);