You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

async函数中console.log未等待XMLHttpRequest异步操作的问题解析

问题原因解释
  • await的使用完全无效:你给xhr.onload赋值时加了await,但await的作用是等待一个Promise完成,这里你await的是一个普通函数定义,不是Promise。这个赋值操作是同步完成的,根本不会等待onload回调执行,所以代码会直接跳到console.log(x)那一行。

  • XMLHttpRequest的onload是异步回调:xhr.send()发送请求后,JavaScript不会暂停等待响应返回,而是继续执行后续代码。onload回调只有在服务器响应回来后才会被触发,这时候console.log(x)早就执行完了,所以打印的是初始值false。

  • async函数的返回特性:dataget是async函数,不管函数内部有没有显式return,调用它都会直接返回一个Promise对象,而不是你期望的x的值。所以外层的console.log(dataget("data.json"))打印的是Promise,而非最终的x。

内容的提问来源于stack exchange,提问作者HamzaElkotb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:20:27