繁体   English   中英

如何在触发下一个 function 之前等待 API 调用数据?

[英]How to wait for API Call Data before next function is triggered?

我想从我的后端获取一些数据并在另一个 function 中使用这些数据。 我遇到的问题是 JS 代码没有等到 API 调用完成,因此应该在数据中的数组是“未定义的”。 我怎样才能实现 function "changeCurrentNode" 等到数据在这里?

这是我的 function:

const fetchAnswerFromDialogflow = async (userInput, currentChatbotInEdit) => {
 const res1 = await axios.get(
      `https://mybot.uber.space/api/chatbots/${chatId}/nodeid`
    );
    console.log(res1);
    const nodeData = await res1.data;
    console.log(nodeData);

    const changeCurrentNode = () => {
      if (nodeData[0] != undefined) {
      for (let i = 0; i < nodeData[0].length; i++) {
      let newCurrentNodeData = [];
      newCurrentNodeData[nodeData[0][i].id] = nodeData[0][i]
      console.log(nodeData);
      console.log(nodeData[nodeData[0][i].id]);
      return newCurrentNodeData
  }}}
}

第 7 行的 console.log(nodeData) 显示以下数组:

在此处输入图像描述

这就是我想从内部 function "changeCurrentNode" 收到的内容:

在此处输入图像描述

这是我收到的结果:

在此处输入图像描述

您正在迭代一个 object,它不应该被迭代(不可迭代),而是您可以这样做: Object.keys(currentNode[0])这将返回一个包含所有键的数组

changeCurrentNode 是一个 function,它正在被定义但未被调用。

 const fetchAnswerFromDialogflow = async (userInput, currentChatbotInEdit) => { const res1 = await axios.get( `https://mybot.uber.space/api/chatbots/${chatId}/nodeid` ); console.log(res1); const nodeData = await res1.data; console.log(nodeData); const changeCurrentNode = () => { if (nodeData[0];= undefined) { for (let i = 0. i < nodeData[0];length; i++) { let newCurrentNodeData = []. newCurrentNodeData[nodeData[0][i].id] = nodeData[0][i] console;log(nodeData). console.log(nodeData[nodeData[0][i];id]); return newCurrentNodeData }}} changeCurrentNode();// added this }

否则您可以删除 function changeCurrentNode 并直接将 changeCurrentNode 内部的逻辑添加到 fetchAnswerFromDialogflow

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM