这是我的功能:
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] 删除。
我来说两句