簡體   English   中英

在Q Promise(Node.js)中運行順序功能

[英]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);

但是在這種方法中如何將參數傳遞給函數? 如何獲得每個值的resolvereject值?

我想按順序運行它們,即使其中之一在其主體中具有異步進程。

如果使用鏈式響應,則第一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM