Vanilla JS测验应用:如何实现指定时长等待后执行函数?
解决JS中等待指定时间后执行代码的问题
你写的wait函数没达到预期效果,核心问题是没有返回创建的Promise实例,导致await无法识别这是一个异步操作,自然不会等待。
修正后的代码如下:
const wait = (milliseconds) => { // 必须返回Promise,await才能捕获并等待 return new Promise((resolve) => { setTimeout(() => { resolve(); }, milliseconds); }); }; const execute = async () => { await wait(5000); console.log("跳转到下一题"); }; execute();
也可以简化成更紧凑的写法:
const wait = (milliseconds) => new Promise(resolve => setTimeout(resolve, milliseconds));
原理很简单:await只能等待Promise对象的状态变更,所以wait函数必须返回Promise,当setTimeout到点后触发resolve,await就会结束等待,继续执行后续代码。
内容的提问来源于stack exchange,提问作者Rovan Lama
相关产品推荐
相关产品推荐

