Получение undefined при вызове функции asyn c из другой функции javascript - PullRequest
0 голосов
/ 18 июня 2020

Для этого проекта я использую wretch, который является оболочкой для fetch

Это выход из моего кода:

У меня негодяи обращаются к отдельному служебному файлу, чтобы отделить рендеринг функциональности из убогой функциональности.

Я экспортирую

export const wretchFunc = var => {
  return wretch(url)
    .json({
      var,
    })
    .get()
    .json()
};

Проблема со вторым файлом: function2 отображает результат неудачной функции, я выполняю обещание и получить желаемый результат, но когда я вызываю его из функции 1, возвращаемое значение не определено, хотя размещение console.log внутри функции 2 дает мне логическое значение, которое я ищу.

У меня есть функция 1, которая возвращает :

return (function2 || function3)

и function2 отображает результат wretchFun c и что-то вроде этого:

function function2(state) {
  const var = fun(state);
  if (!var) {
    return false;
  }
  wretchFunc(var).then(json => {
    return JSON.parse(json).isTrue;
  });
}

Я предполагаю, что функция one выполняется до получения результата функции2 но я не уверен, что делать.

Изменить: я пытался сделать:

 return wretchFunc(var).then(json => {
    return JSON.parse(json).isTrue;
  });
}

Это дает мне еще одно обещание, которое я могу решить верхняя функция, но поскольку у меня есть предыдущее условие if (! var), которое возвращает false, это заставит функцию вернуть 2 разные вещи. есть ли способ передать значение обещания в function2 и заставить функцию function1 дождаться своего результата.

Спасибо

1 Ответ

0 голосов
/ 18 июня 2020

Попробуйте обернуть в новое обещание и вернуть его

function function2(state) {
  return new Promise((res, rej) => {
    const var = fun(state);
    if (!var)
      res(false);
    wretchFunc(var)
    .then(json => resolve(JSON.parse(json).isTrue)
    .catch(err) => rej(err));
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...