在我的每一个承诺之后,我执行了一个,然后在此我检查用户是否希望取消承诺链。
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。
目前尚未定义。
答案 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