簡體   English   中英

Node.js如何知道所有異步函數何時完成?

[英]Node.js how to know when all async functions are done?

這是我的功能:

var Tick = () => {
    binance.prices((error, ticker) => {
        for (var key in ticker) {
            if(key.includes('BTC')) {
                // Cryptocurrency can be bought with BTC
                var currency = {
                    price: ticker[key],
                    symbol: key
                }
                tickerModule.getOne(currency, function(err, rows) {
                    if (err) return console.log(err);
                });
            }
        }
        console.log('done?');
    });
}

我希望console.log會在async函數里面執行但不幸的是不是這樣。 如何知道此函數中的所有異步函數何時完成?

我幾天來一直在努力解決這個問題,我希望有人可以幫我解決這個問題。

編輯:我知道我可以使用在tickerModule.getOne之后觸發的回調函數但是我想知道所有異步函數何時完成,而不是當其中一個完成時。

var Tick = () => {
    binance.prices((error, ticker) => {
        const promises = [];
        for (var key in ticker) {
            if (key.includes('BTC')) {
                // Cryptocurrency can be bought with BTC
                var currency = {
                    price: ticker[key],
                    symbol: key
                }
                promises.push(
                    new Promise((resolve, reject) => {
                        tickerModule.getOne(currency, function (err, rows) {
                            if (err) reject(err);
                            else resolve();
                        });
                    })
                );
            }
        }
        Promise.all(promises).then(() => {
            console.log('done?');
        }).catch(err => console.log(err));
    });
}

使用簡單的Promise.all來了解所有異步調用何時完成。

暫無
暫無

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

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