Может ли кто-нибудь сказать мне, почему моя функция setTimeout в блоке try не работает? - PullRequest
0 голосов
/ 13 июля 2020

У меня проблема. Может ли кто-нибудь сказать мне, почему моя функция setTimeout в блоке try не работает? Он не ждет 10000 миллисекунд и не прогоняется. В результате на консоли отображается сообщение об ошибке "не удается прочитать данные свойства" undefined ". API должен вернуть объект, но ему требуется некоторое время для получения ответа. Console.log (responseInformation) также возвращает" undefined ".

const fetchAnswerFromDialogflow = 
try {
      const res = await axios.post(
        `https://dialogflow.googleapis.com/v2/projects/myteachingbot-arxmxd/agent/intents:batchUpdate`,
        node,
        config
      );

      const waitForResponseAssignment = async () => {
        let nodesSavedToChatbot = await res.response.data;
        return nodesSavedToChatbot;
      };

      const responseInformation = setTimeout(
        await waitForResponseAssignment(),
        10000
      );
      
      console.log(responseInformation);

1 Ответ

1 голос
/ 13 июля 2020

Проблемы в вашем коде:

const res = await axios.post(
  `https://dialogflow.googleapis.com/v2/projects/myteachingbot-arxmxd/agent/intents:batchUpdate`,
  node,
  config
);

const waitForResponseAssignment = async () => {
   /*
    axios response doesnt have a property called response,
    so res.response.data is error.
    Also res.data is already a response from the api(res is
    not a promise so you dont have to use await below, 
    even you dont need this `waitForResponseAssignment` function)
   */
  let nodesSavedToChatbot = await res.response.data;
  return nodesSavedToChatbot;
};

// This timeout function is not correct, setTimeout
// accepts the first param as callback(but you passed a value)
// Actually you also dont need this `setTimeout`
const responseInformation = setTimeout(
  await waitForResponseAssignment(),
  10000
);

Вы можете просто использовать следующий код:


const res = await axios.post(
  `https://dialogflow.googleapis.com/v2/projects/myteachingbot-arxmxd/agent/intents:batchUpdate`,
  node,
  config
);
return res.data;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...