我试图在没有'然后'的情况下链接Q承诺,所以最终链条看起来像这样:
var foo = new Foo();
foo
.method1()
.method2()
.method3();
如何实现foo的方法,以便在解析前一个的承诺后执行每个方法?
这个问题被标记为this one的完全重复,但我试图使用Q lib而不是jQuery来实现这一点。
答案 0 :(得分:1)
我不确定你是否会从中获得任何收益。
我想你可以这样做:
function Foo() {
var self = this,
lastPromise = Promise.resolve();
var chainPromise = function(method) {
return function() {
var args = Array.prototype.slice.call(arguments))
lastPromise = lastPromise.then(function(){
return method.apply(self, args);
});
return self;
}
}
this.method1 = chainPromise(function() {
// do the method1 stuff
// return promise
});
this.method2 = chainPromise(function() {
// do the method2 stuff
// return promise
});
// etc...
}