簡體   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