используйте answer .then () снаружи и используйте в другой части кода в узле js - PullRequest
0 голосов
/ 01 марта 2019

Как я могу использовать ответ на обещание за пределами.Тогда что мне делать?

   arreglo.forEach((item) => {
        if (item.tipoCampo == 3) {
            self.campoSelects(item.tablaCampo)
                .then(resp => {
                    console.log(resp)
                })
                .catch(e => console.log(e))
        }
    });

console.log (соответственно) внутри .then () знает об этом и печатает правильно, но когда я хочу узнать соответсвенно из forEach для использования ниже, он говоритundefined Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Предполагаю, что вы хотите получить доступ к значению в forloop.Так как self.campoSelects - это обещание, мы можем использовать async await.

// Call campo selects
function getCampoSelects(_self, tablaCampo) {
  return new Promise(async (resolve, reject) => {
    let campoData;

    try {
      campoData = await _self.campoSelects(tablaCampo);
    } catch (err) {
      reject(err);
    }

    resolve(campoData);
  });
}

function happyLittleFunc() {
  const arreglo = [];

  arreglo.forEach(async (item) => {
    if (item.tipoCampo === 3) {
      let campoSelect;

      // Unsure if you are setting self somewhere but it can be passed in here.
      try {
        campoSelect = await getCampoSelects(self, item.tipoCampo);
      } catch (err) {
        console.log(err);
        return;
      }

      console.log(campoSelect);
    }
  });
}

happyLittleFunc();
0 голосов
/ 02 марта 2019
arreglo.forEach((item) => {
   if (item.tipoCampo == 3) {
     self.campoSelects(item.tablaCampo)
        .then(resp => {
            logMyData(resp);
        })
         .catch(e => console.log(e))
    }
});

logMyData=(x)=>{
 console.log(x);
}

Это так же просто, как добавить вспомогательную функцию, которая выполняется внутри вашего .then

...