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

JavaScript使用await读取文本文件仅返回Pending Promise的问题

问题原因与解决方案

你这段代码的核心问题是:所有async函数的返回值本质都是Promise对象——哪怕你在函数内部return了普通文本,它也会被自动包装成一个resolved状态的Promise。你直接将load(source_text_path)赋值给source_text,拿到的自然是还未完成的pending状态Promise,而非最终的文本内容。

解决方法一:在async函数内用await调用

因为await只能在async函数内部使用,所以可以封装一个入口函数:

async function loadAndLog() {
  try {
    var source_text = await load(source_text_path);
    console.log(source_text);
  } catch (err) {
    // 这里可以额外处理上层错误,或者依赖load函数内部的catch
    console.error('加载失败:', err);
  }
}
loadAndLog();

解决方法二:用Promise的.then()方法处理结果

直接通过Promise的回调获取resolved后的内容:

load(source_text_path).then(source_text => {
  console.log(source_text);
}).catch(err => {
  // 可选:额外处理错误
  console.error('加载失败:', err);
});

额外方案:顶级await(浏览器环境)

如果是在浏览器的模块脚本中(需要给script标签加上type="module"),可以直接使用顶级await:

<script type="module">
async function load(path) {
    try {
        const response = await fetch(path);
        const text = await response.text();
        return text;
    } catch (err) {
        console.error(err);
    }
}

var source_text = await load(source_text_path);
console.log(source_text);
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:15:44