为何这段异步立即执行函数表达式(async IIFE)无法运行?
关于异步立即执行函数表达式(async IIFE)无法运行的问题
你贴的这段代码本身是合法且可正常运行的,如果没看到预期输出,大概率是以下几种原因:
- 环境不支持async/await语法:async函数属于ES2017特性,旧版浏览器(如IE11及更早)、Node.js 7.6以下版本没有原生支持,会直接抛出语法错误导致代码终止。解决办法是升级运行环境,或用Babel等工具转译代码至兼容版本。
- 未处理Promise拒绝:如果
f()返回的Promise被拒绝(比如后续修改为Promise.reject()),而你的async IIFE未捕获错误,部分环境会触发未捕获的Promise异常,可能静默失败,看起来像代码没运行。可以给IIFE添加catch处理:const f = () => Promise.resolve() (async function() { console.log('running async IIFE...') await f() })().catch(err => console.error(err)) - 控制台输出被过滤:检查运行环境的控制台是否开启了日志显示,有没有过滤掉
console.log类的输出。
内容的提问来源于stack exchange,提问作者Ben Aston
相关产品推荐
相关产品推荐

