Node.js 如何知道所有异步功能何时完成?

罗伊-威廉斯

这是我的功能:

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 之后触发的回调函数,但是我想知道所有异步函数何时完成,而不是其中 1 个完成时。

法祖丁穆罕默德|
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来了解所有异步调用何时完成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章