求助:如何实现4个函数按4秒间隔依次执行?当前代码异常
问题分析与解决
问题根源
你这段代码的问题在于:三个sleep(4000)是同时启动定时器的。当StepOne执行完后,三个4秒的等待会同步开始计时,4秒后三个then回调会几乎同时触发,所以StepTwo、StepThree、StepFour会无间隔地连续输出,只有StepOne和它们之间有4秒间隔。
修复方案
方案1:Promise链式调用
把后续的sleep调用嵌套在前一个then的回调里,让它们按顺序排队执行:
StepOne(); sleep(4000) .then(() => StepTwo()) .then(() => sleep(4000)) .then(() => StepThree()) .then(() => sleep(4000)) .then(() => StepFour());
这样每一个sleep都会在前一个步骤完全结束后才开始计时,确保每两个函数之间间隔4秒。
方案2:async/await(更易读)
用async/await语法让异步代码看起来像同步逻辑,更直观:
async function runAllSteps() { StepOne(); await sleep(4000); StepTwo(); await sleep(4000); StepThree(); await sleep(4000); StepFour(); } runAllSteps();
这种写法会严格按照顺序执行:执行StepOne → 等4秒 → 执行StepTwo → 等4秒 → 执行StepThree → 等4秒 → 执行StepFour,完美符合你的需求。
内容的提问来源于stack exchange,提问作者Shtarley
相关产品推荐
相关产品推荐

