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

如何在非async函数及不改扩展名的情况下使用await Promise.all()?

解决方案

首先先修正你代码里的两处小问题:

  • 关键字拼写错误:async función 应该改为 async function
  • 函数参数与调用不匹配:download 函数定义接收的是ids参数,但调用时传入的是单个id元素,建议把参数名改为id更合理,修正后的代码基础版本:
let ids = [164838, 793838]

async function download(id){
    // 函数逻辑.......
}

await Promise.all(
    ids.map(element => download(element))
)

接下来针对你的需求(不把await Promise.all()放入异步函数、不改文件扩展名),提供两种可行方案:

方案1:通过package.json配置模块类型

在项目根目录的package.json中添加"type": "module"字段,这样Node.js会把所有.js文件当作ES模块处理,自然支持顶级await:

{
  "type": "module"
}

配置完成后,直接用node 你的文件名.js运行即可。

方案2:运行时指定模块类型

如果不想修改package.json,可以在运行命令时添加--input-type=module参数,强制Node.js以ES模块模式加载当前文件:

node --input-type=module 你的文件名.js

以上两种方案都能满足你的要求,无需调整文件结构或扩展名,就能让顶级await正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:02:05