如何正确调用setTimeout实现打印A后3秒输出B和C
问题根因
- 语法错误:你粘贴的代码末尾多了一个多余的闭合大括号
},会直接触发JS语法报错,导致代码完全无法执行,这是你看不到任何输出的首要原因。 setTimeout传参错误:setTimeout(main(), 3000)的写法是立即执行main函数,把函数返回值传给setTimeout,而不是把main本身作为延迟执行的函数传入,正确的传参应该是不带括号的函数引用setTimeout(main, 3000)。
实现方案
方案1:回调写法(无额外依赖)
function main(){ console.log('A'); // 间隔3秒后打印B和C setTimeout(() => { console.log('B'); console.log('C'); }, 3000) } // 直接调用即可触发逻辑 main();
方案2:async/await写法(复用预留的sleep函数)
// 实现sleep延迟函数 function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function main(){ console.log('A'); // 等待3秒再执行后续代码 await sleep(3000); console.log('B'); console.log('C'); } main();
如果你的需求是先延迟3秒再打印A,之后立刻打印B和C,才需要把main调用套进setTimeout:
setTimeout(main, 3000);
内容的提问来源于stack exchange,提问作者Sucheta Shrivastava
相关产品推荐
相关产品推荐

