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