Javascript Promise的响应未正确返回json文件输出
因此,当运行以下代码时,Javascript Promise的响应未正确返回json文件输出,javascript,json,fetch,console.log,Javascript,Json,Fetch,Console.log,因此,当运行以下代码时,console.log(ba)的响应是undefined 但是当我在Chrome V8控制台中尝试这一点时,我得到了我期望的正确输出。我不完全确定这里发生了什么 let ba; function Setqa() { ( async() => { await fetch('questions.json') .then(res => res.json())
console.log(ba)
的响应是undefined
但是当我在Chrome V8控制台中尝试这一点时,我得到了我期望的正确输出。我不完全确定这里发生了什么
let ba;
function Setqa() {
( async() => {
await fetch('questions.json')
.then(res => res.json())
.then(async(data) => {
ba = await data;
});
})();
}
Setqa();
console.log(ba);
json文件的内容如下所示:
"questions": [{
"questionType": "multiple",
"question": "How is the weather",
"answers": "",
"questionAnswer": ""
},
{
"questionType": "multiple",
"question": "How are you today?",
"answers": "<textarea rows='5' class='textArea'></textarea>1",
"questionAnswer": "textPurpose1"
}
]
“问题”:[{
“问题类型”:“多个”,
“问题”:“天气怎么样”,
“答覆”:“,
“问题答案”:”
},
{
“问题类型”:“多个”,
“问题”:“你今天好吗?”,
“答案”:“1”,
“问题答案”:“文本目的1”
}
]
我想这应该行得通
let ba;
function Setqa() {
return fetch('questions.json')
.then(res => res.json())
.then(async(data) => {
ba = await data;
});
}
Setqa().then( () => console.log(ba) );
但更好的方法是
async function setQa(){
const res = await fetch('questions.json');
return res.json();
}
let ba = await setQa();
Chrome控制台的问题是,如果变量引用没有更改,它将更新该值。稍后再打开控制台。试试这个:
let c=()=>{let b={}console.log(b)setTimeout(()=>{b={hi:'gg'}},5000)};c()
首先尝试在5000ms之前打开控制台输出,然后再次运行,并在5000ms之后打开控制台输出,然后查看差异。回到你的问题上来,你的问题是你正在打印ba
,然后它才真正解决