首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将回调函数和参数传递给javascript函数

将回调函数和参数传递给javascript函数
EN

Stack Overflow用户
提问于 2013-06-19 09:27:47
回答 1查看 222关注 0票数 1

我是JS的新手。我有一个帮助器类,它执行一些常见的服务器抓取操作。目前,其中一个函数将如下所示:

代码语言:javascript
复制
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');  
                },
            });
        }

所以我想让它更灵活的是传入回调函数。所以我试了一下:

代码语言:javascript
复制
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);
                    }
                },
            });
        }

我想怎么称呼它,就像这样:

代码语言:javascript
复制
var helper = new Helper();
helper.getAvailablePlatforms('', this.populatePlatforms(???????));

我希望我的回调函数使用它在回调中收到的数据。我怎样才能做到这一点呢?在进阶时谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-19 09:28:48

您只需传入函数引用即可。你不想通过结束函数来调用它,它将在传递回调时被(),而不是函数引用,回调将以函数的结果结束(如果没有返回任何东西,它将是未定义的)。getAvailablePlatforms: function (platform, callback) {内部的populatePlatforms

因此,您可能想要这样做:

代码语言:javascript
复制
helper.getAvailablePlatforms('', this.populatePlatforms);

要在上下文中传递,请使用ecmascript5 function.prototype.bind函数。

代码语言:javascript
复制
helper.getAvailablePlatforms('', this.populatePlatforms.bind(this));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17181538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档