Javascript从映射中的函数获取回调

Javascript从映射中的函数获取回调,javascript,node.js,callback,promise,async-await,Javascript,Node.js,Callback,Promise,Async Await,我已经为此奋斗了很长一段时间,但还没有找到解决这个问题的好办法 我有一个数组,我通过一个具有回调的导入函数映射它。我想从回调中获取dataJSON,对其进行操作,输出并通过另一个函数运行它 因为node_模块qbo.getBill函数有一个回调,我认为我不能运行promise或async\await,我还没有在添加getBill函数后成功地运行它 以下是我的代码/我正在尝试做的事情: var QuickBooks=require'node-QuickBooks' var qbo=新的Quick

我已经为此奋斗了很长一段时间,但还没有找到解决这个问题的好办法

我有一个数组,我通过一个具有回调的导入函数映射它。我想从回调中获取dataJSON,对其进行操作,输出并通过另一个函数运行它

因为node_模块qbo.getBill函数有一个回调,我认为我不能运行promise或async\await,我还没有在添加getBill函数后成功地运行它

以下是我的代码/我正在尝试做的事情:

var QuickBooks=require'node-QuickBooks' var qbo=新的QuickBooks。。。 让BillIds=[…] 让newArray=[] 让mapData=BillIds.mapval=>{ qbo.getBillval,函数错误,Billid{ newArray.push={ id:Billid.id, 余额:Billid,余额 } } }
使用AsyncRonousDataNewArray执行操作确保您可以使用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)

当你只循环的时候为什么要映射函数?我从一个循环开始,然后经过一堆相当多的阅读后,变成了一个映射,我真的不知道为什么我现在有了一个映射。一个循环能解决这个问题吗?getBill返回一个承诺?getBill有一个回调,所以没有承诺?谢谢你,我在const new array=wait promise中得到了一个wait错误。但是如果我删除它,它似乎会工作。编辑:哦,是的,我需要把它放在一个异步函数中,这样做很完美: