我有两个函数返回Q
Promise
:
var q = require('q');
var get1 = function () {
var deferred = q.defer();
deferred.resolve('hello world');
return deferred.promise;
};
var get2 = function () {
var deferred = q.defer();
deferred.resolve('hello world 2');
return deferred.promise;
};
我可以这样打电话给他们:
get1().then(console.log,console.error);
现在,我想按顺序调用它们。怎么样?
我试过了:
q.fcall(self.get1)
.then(self.get2);
但是在这种方法中如何将参数传递给函数?如何为每个人获取resolve
或reject
个值?
我想按顺序运行它们,即使其中一个在其体内有异步进程。
答案 0 :(得分:1)
如果你使用链式响应,那么第一个Promise的值将通过continuation传递给第二个,所以你的[PDOException]
SQLSTATE[HY000] [14] unable to open de database file.
应该接受一个参数:
get2
另外作为旁注,您应该尽可能避免使用var get1 = function () {
var deferred = q.defer();
deferred.resolve('hello world');
return deferred.promise;
};
var get2 = function (result) {
var deferred = q.defer();
deferred.resolve(result + 2);
return deferred.promise;
};
//Then you can use it like so
get1().then(get2).then(console.log.bind(console), console.error.bind(console));
api,因为它被视为anti-pattern。