【发布时间】:2015-04-11 05:26:21
【问题描述】:
在使用 Q/promises/asynchronous 函数时,将值从一个类方法返回到不同类方法的最佳方法是什么?
具体来说,我有以下 ClassOne.myMethod() 将调用 ClassTwo.test() 来执行几个异步任务(数据库更新、文件写入等)。我希望 ClassTwo.test() 返回一些东西(在这个例子中,“FOUR”)。使用 Promise 和异步调用时,我该怎么做?
我这样做是因为我希望 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);
};
【问题讨论】:
-
你可以在解析promise时传递值,如
deferred.resolve('something', 'else'); -
谢谢,Adeneo。除了 Mike 在下面的评论之外,您的评论是我理解如何实现这一点所需要的。非常感谢。
标签: javascript node.js asynchronous q