通过回调传递数据?

时间:2015-06-23 11:37:12

标签: javascript jquery

在我的每一个承诺之后,我执行了一个,然后在此我检查用户是否希望取消承诺链。

this.getData
.then(function(data){
    self.shouldContinue(self.myNextMethod, data);
})
///more promises

以下是检查链是否应继续的检查:

p.shouldContinue = function(cb, args){

    if(this.cancelCurrentRequest) {

        if(typeof this.currentRequest.abort === 'function')this.currentRequest.abort();
        return $.Deferred(function (d){ return d.reject();}).promise();
    }

    this.currentRequest = cb.apply(this,args);
    return this.currentRequest;
};

我遇到的问题是如果它应该继续,则将参数传递给方法。

例如,我从getData传递'data',然后需要传递给myNextMethod。

目前尚未定义。

1 个答案:

答案 0 :(得分:1)

阅读文档有很多帮助:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

apply方法有两个参数 - 第一个是thisArg(上下文),第二个是参数数组。

您的问题有两种可能的解决方案:

1.使用the other thread

中给出的确切代码
   .then(function() {
    return shouldContinue(getMoreData,arguments);
   })

arguments是一个特殊的类似数组的JavaScript对象,可以在一个包含传递给该函数的所有参数的函数中使用

2.使用call这样:

   .then(function(data) {
    return shouldContinue(getMoreData,data);
   })

   p.shouldContinue = function(cb, data){
       ...
      this.currentRequest = cb.call(this,data);
   };

call的文档:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call