运行 Q Promise 中的顺序函数 (Node.js)
Running sequential functions in Q Promise (Node.js)
我有两个函数 return a 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
值?
我想按顺序 运行 它们,即使其中一个在其主体中有异步进程。
如果您使用链式响应,第一个 Promise 的值将通过延续传递给第二个,因此您的 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));
另请注意,您应尽可能避免使用 defer
api,因为它被认为是 anti-pattern.
我有两个函数 return a 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
值?
我想按顺序 运行 它们,即使其中一个在其主体中有异步进程。
如果您使用链式响应,第一个 Promise 的值将通过延续传递给第二个,因此您的 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));
另请注意,您应尽可能避免使用 defer
api,因为它被认为是 anti-pattern.