Javascript 将响应值存储到全局对象中。成功但没有';行不通
我真的无法理解JS是如何运行的。你能给我解释一下吗(至少,给我一些关键词)Javascript 将响应值存储到全局对象中。成功但没有';行不通,javascript,object,asynchronous,fetch,Javascript,Object,Asynchronous,Fetch,我真的无法理解JS是如何运行的。你能给我解释一下吗(至少,给我一些关键词) fetch(“https://opentdb.com/api.php?amount=10") .then(res=>res.json()) 。然后(res=>{ 多斯(雷斯) }) 函数dosth(数据){ console.log(数据) console.log(data.results[0]) } 它来了: 但当我改变我的方式 让myobj={} 取回(“https://opentdb.com/api.php?am
fetch(“https://opentdb.com/api.php?amount=10")
.then(res=>res.json())
。然后(res=>{
多斯(雷斯)
})
函数dosth(数据){
console.log(数据)
console.log(data.results[0])
}
它来了:
但当我改变我的方式
让myobj={}
取回(“https://opentdb.com/api.php?amount=10")
.then(res=>res.json())
。然后(res=>{
for(设i=0;i res.json())
。然后(res=>{
对于(让i=0;i{}/devtools的色度显示一个具有属性的对象(我认为它一定是一个空的对象)。
>未定义
你能给我解释一下吗?JavaScript通常是同步运行的。但是,fetch调用是异步调用 dosth函数应位于如下所示的后面:
让myobj2={}
取回(“https://opentdb.com/api.php?amount=10")
.then(res=>res.json())
。然后(res=>{
for(设i=0;iJavaScript正常同步运行。在第三种情况下,您收到空对象,因为fetch
调用是异步调用,即为什么dosth(myobj)
在fetch
调用完成之前被调用,并将给您响应。因此,调用dosth(myobj)很好
,在接收响应数据的fetch
调用的响应块内,否则对象将为空
原因:
{}//空对象。
=>它来自您的第1行,即让myobj={}
=>关于数据[“0”]
,数据是没有属性的空对象。实际上,它不是空对象,我控制台记录了它,仍然有数据,但当我尝试访问它的属性时,它的属性是未定义的。我捕获了我的devtools,检查了链接,你就会知道我为什么问这个问题。