我想您正在寻找以下内容。请注意,我已经将所有对deferred.resolve()的调用包装为异步函数的回调(在本例中为process.nexTick),因为这将是一个比在返回之前解析promise更现实的用例,也就是说,我假设您将如何处理异步任务。此外,您还声明了一个变量“myClass”,并将相同的标识符用作“myMethod”的函数参数。我认为这不是您真正想要做的,所以我在下面的示例中对其进行了更改。
var ClassTwo = function() {};
var ClassOne = function() {};
var Q = require('q');
ClassOne.prototype.myMethod = function(myClass) {
myClass.test().then(function(result) { // now test returns a promise
console.log('returns '+ result); // that we call .then() on
});
};
ClassTwo.prototype.test = function() {
var one = function() {
var deferred = Q.defer();
console.log('ONE');
process.nextTick(function() { deferred.resolve()});
return deferred.promise;
};
var two = function() {
var deferred = Q.defer();
console.log('TWO');
process.nextTick(function() { deferred.resolve()});
return deferred.promise;
};
var three = function() {
var deferred = Q.defer();
console.log('THREE');
process.nextTick(function() { deferred.resolve('FOUR')});
return deferred.promise;
};
return one()
.then(two)
.then(three)
};
(new ClassOne()).myMethod(new ClassTwo());