我是JS的新手。我有一个帮助器类,它执行一些常见的服务器抓取操作。目前,其中一个函数将如下所示:
getAvailablePlatforms: function (platform) {
var self = this;
if (_.isUndefined(platform) || platform == '') {
platform = "crystalproject";
}
$.ajax({
url: '/api/platform/' + platform,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
console.log("Got data");
self.platforms = data;
self.eventAggregator.trigger('getplatforms');
},
});
}所以我想让它更灵活的是传入回调函数。所以我试了一下:
getAvailablePlatforms: function (platform, callback) {
var self = this;
if (_.isUndefined(platform) || platform == '') {
platform = "crystalproject";
}
$.ajax({
url: '/api/platform/' + platform,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
console.log("Got data");
self.platforms = data;
self.eventAggregator.trigger('getplatforms');
if (callback && typeof(callback) === "function") {
callback(data);
}
},
});
}我想怎么称呼它,就像这样:
var helper = new Helper();
helper.getAvailablePlatforms('', this.populatePlatforms(???????));我希望我的回调函数使用它在回调中收到的数据。我怎样才能做到这一点呢?在进阶时谢谢!
发布于 2013-06-19 09:28:48
您只需传入函数引用即可。你不想通过结束函数来调用它,它将在传递回调时被(),而不是函数引用,回调将以函数的结果结束(如果没有返回任何东西,它将是未定义的)。getAvailablePlatforms: function (platform, callback) {内部的populatePlatforms
因此,您可能想要这样做:
helper.getAvailablePlatforms('', this.populatePlatforms);要在上下文中传递,请使用ecmascript5 function.prototype.bind函数。
helper.getAvailablePlatforms('', this.populatePlatforms.bind(this));https://stackoverflow.com/questions/17181538
复制相似问题