我一直在努力解决这个问题,而且我们已经找不到解决这个问题的好办法了。
我有一个数组,我通过一个回调的导入函数进行映射。我想从回调中获取数据(JSON),操纵它,输出它并通过另一个函数运行它。
因为node_module qbo.getBill函数有一个回调,我不认为我可以运行promise或async \ await,所以我添加getBill函数后我没有成功
这是我的代码/我想做的事情:
var QuickBooks = require('node-quickbooks')
var qbo = new QuickBooks(...)
let BillIds = [....]
let newArray =[]
let mapData = BillIds.map(val => {
qbo.getBill(val, function (err, Billid) {
newArray.push = {
id: Billid.Id,
balance: Billid.Balance
}
})
})
DoAThingWithAsyncronousData(newArray)

对于我的生活,我无法在完成下一步之前等待异步数据,我哪里出错了?
答案 0 :(得分:1)
当然你可以使用Promise.all,你只需要对getBill
的回调做出承诺:
const newArray = await Promise.all(
BillIds.map(val => new Promise((resolve, reject) => {
qbo.getBill(val, (err, Billid) => {
const billObj = {
id: Billid.Id,
balance: Billid.Balance
}
resolve(billObj)
});
}))
);
DoAThingWithAsyncronousData(newArray)