我有一个带有函数的对象。当我以这种方式使用它时,它总是返回 undefined
。我怎样才能让它返回任何this.client[method].read(params).done
函数返回?
rest.get('search', {query: 'Eminem', section: 'tracks'})
这是对象:
var rest = {
// configuration
base: 'http://localhost/2.0/',
client: null,
get: function (method, params) {
// if client is null, create new rest client and attach to global
if (!this.client) {
this.client = new $.RestClient(this.base, {
cache: 5 //This will cache requests for 5 seconds
});
}
// add new rest method
if (!this.client[method]) {
this.client.add(method);
}
// make request
this.client[method].read(params).done(function(response) {
//'client.foo.read' cached result has expired
//data is once again retrieved from the server
return response;
});
}
}
最佳答案
get: function (method, params, callback) {
// if client is null, create new rest client and attach to global
if (!this.client) {
this.client = new $.RestClient(this.base, {
cache: 5 //This will cache requests for 5 seconds
});
}
// add new rest method
if (!this.client[method]) {
this.client.add(method);
}
// make request
this.client[method].read(params).done(function(response) {
//'client.foo.read' cached result has expired
//data is once again retrieved from the server
callback(response);
});
/*
simpler solution:
this.client[method].read(params).done(callback);
*/
}
这是异步代码,因此您必须使用回调:
rest.get('search', {query: 'Eminem', section: 'tracks'}, function(response) {
// here you handle method's result
})
关于javascript - 嵌套函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864724/