Не удается получить данные после зависимого вызова API с помощью асинхронного проблемного узла - PullRequest
0 голосов
/ 06 мая 2019

Я вызываю API для извлечения данных на основе этих данных. Я вызываю разные API, которые основаны на условии.

Я использовал обещание также поддерживать асинхронный код, но пока не повезло.В конце блока я хочу, чтобы все данные помещались в массив, но я получаю пустой массив.

async (body, nextCall) => {
    var tmpArryOfModuleList = []
        var bodyData = body.data
        var promise = new Promise((resolve, reject) => {
          bodyData.forEach(element => {
            if (element.hasCRUD === '0') {
              var options = {
                method: 'GET',
                url: `${apiURL}/api/fetchAllCharts`,
                headers:
                {
                  Authorization: token
                }
              };

              request(options, function (error, response, dashboardData) {
                if (error) {
                  return nextCall({
                    error: error
                  })
                }
                var parsedDashboardData = JSON.parse(dashboardData)
                for (var i = 0; i < parsedDashboardData['data'].length; i++) {
                  var val = element.name + " - " + parsedDashboardData['data'][i]['name']
                  var randomID = Math.random().toString(36).slice(2)
                  tmpArryOfModuleList.push({ "_id": randomID, "submodule": val })
                }
              });
            } else if (element.hasCRUD == '1') {
              var options = {
                method: 'GET',
                url: `${apiURL}/api/fetchAllActions`,
                headers:
                {
                  Authorization: token
                }
              };

              request(options, function (error, response, crudData) {
                if (error) {
                  return nextCall({
                    error: error
                  })
                }
                var parsedcrudData = JSON.parse(crudData)
                for (var i = 0; i < parsedcrudData['data'].length; i++) {
                  var val = element.name + " - " + parsedcrudData['data'][i]['name']
                  var randomID = Math.random().toString(36).slice(2)
                  tmpArryOfModuleList.push({ "_id": randomID, "submodule": val })
                }
              });
            } else {
              console.log('no data found')
              reject('No Data Found')
            }
          })
          resolve(tmpArryOfModuleList)
        })
        console.log('tmpArryOfModuleList', tmpArryOfModuleList)
      }

Что я делаю не так?Как мне добиться результата на последнем массиве?

...