[英]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.