簡體   English   中英

Node.js:等待異步調用的響應

[英]Node.js: wait for the response from an async call

我正在開發一個 API,通過它我應該能夠添加一個用戶列表作為 JIRA 觀察者(所以我正在與 JIRa REST API 交談)

這是執行此操作的函數:

for (var i = 0; i < votes.totalValue; i++) {
        var voter = {
            user  : votes.rawVoteData[i].user,
            value : votes.rawVoteData[i].value,
            email : votes.rawVoteData[i].email,
            fname : votes.rawVoteData[i].fname,
            lname : votes.rawVoteData[i].fname
        };

        // Add these users as watchers to the Jira
        jira.jira.addWatcher(issueId, voter.user, function(err, result){  
            // TODO: Return to callback
            rep++;
            console.log('user='+voter.user);
            console.log(result);

        });
    }

投票對象具有上面顯示的用戶列表。 現在的問題是,當我執行這個函數時,由於節點的異步性質,for 循環被完全執行,然后所有的異步調用都被立即觸發。 (這對我不起作用,因為 JIRa REST API 似乎不支持這一點)

我想更改上面的代碼,以便我一次為一個用戶調用 addWatcher 函數,並僅在上一個異步調用返回時才為下一個用戶調用下一個 addWAtcher 調用(。即移動到下一個為每個用戶一個一個地異步調用,而不是一次觸發所有對 addwatcher 的調用。)

我怎樣才能做到這一點?

請指教,

謝謝!

你應該看看async模塊。

您可以使用async.each()函數。 該函數接受一個項目數組,然后遍歷它們,調用一個接受該項目作為參數的包裝函數。 當所有調用完成后,您指定要調用的最終函數。 其他解決方案可以是async.parallel() (以防您不介意並行運行它們。

歸功於這個偉大的教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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