簡體   English   中英

Javascript從Map中的函數獲取回調

[英]Javascript get callback from function within map

我已經為此苦苦掙扎了很長時間,但一直沒有找到解決這個問題的好方法。

我有一個數組,該數組通過具有回調的導入函數進行映射。 我想從回調中獲取數據(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) 

為了我的一生,在完成下一步之前,我無法采取任何措施等待異步數據,我在哪里出錯呢?

確保可以使用Promise.all,您只需要在getBill的回調周圍getBill承諾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)

暫無
暫無

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

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