使用Q/promises /異步函數時,從一個類方法返回一個值到另一個類方法的最佳方式是什麼?如何在使用Q/promise/asynchronous函數時從一個類方法返回一個值到另一個類方法?
具體來說,我有以下的地方,ClassOne.myMethod()將調用ClassTwo.test()來執行幾個異步任務(數據庫更新,文件寫入等)。我想要ClassTwo.test()返回一些東西(在本例中爲「FOUR」)。在使用承諾和異步調用時,我該怎麼做?
我這樣做是因爲我想讓ClassTwo成爲執行將由其他類調用的任務的非常通用的一組方法(因爲每次都不要重新發明方向盤)。
例如,
var myClass = new ClassTwo();
ClassOne.prototype.myMethod = function(myClass) {
console.log('Returns: ', myClass.test());
};
ClassTwo.prototype.test = function() {
var one = function() {
var deferred = Q.defer();
console.log('ONE');
deferred.resolve();
return deferred.promise;
};
var two = function() {
var deferred = Q.defer();
console.log('TWO');
deferred.resolve();
return deferred.promise;
};
var three = function() {
var deferred = Q.defer();
console.log('THREE');
deferred.resolve();
return 'FOUR';
};
return one()
.then(two)
.then(three);
};
您可以在解決承諾時傳遞值,如'deferred.resolve('something','else');' – adeneo 2015-02-11 00:07:54
Thanks,Adeneo。除了下面的Mike之外,您的評論是我需要了解如何實現這一點的。非常感激。 – RT01 2015-02-11 07:59:36