[英]Running sequential functions in Q Promise (Node.js)
我有兩個返回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的值將通過繼續傳遞到第二個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,因為它被認為是反模式 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.