在 Q 库中不使用 'then' 链接承诺
Chaining promises without using 'then' with Q library
我正在尝试在没有 'then' 的情况下链接 Q promises,所以最终链将如下所示:
var foo = new Foo();
foo
.method1()
.method2()
.method3();
如何实现 foo 的方法,以便在前一个方法的承诺得到解决后执行每个方法?
这个问题被标记为 this one 的完全重复,但我正在尝试使用 Q lib 来实现它,而不是 jQuery。
我不确定你是否会从中得到什么。
我想你可以这样做:
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...
}
我正在尝试在没有 'then' 的情况下链接 Q promises,所以最终链将如下所示:
var foo = new Foo();
foo
.method1()
.method2()
.method3();
如何实现 foo 的方法,以便在前一个方法的承诺得到解决后执行每个方法?
这个问题被标记为 this one 的完全重复,但我正在尝试使用 Q lib 来实现它,而不是 jQuery。
我不确定你是否会从中得到什么。
我想你可以这样做:
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...
}