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

JavaScript中setTimeout未等待1秒执行?求代码问题排查

问题原因与解决方案

你的代码核心问题是对setTimeout的回调参数使用错误:

setTimeout(simpleFunction(b), 1000);

这里你直接执行了simpleFunction(b),并把它的返回值(undefined)传给了setTimeout,导致函数没有被延迟,而是立刻触发递归调用,所以程序启动后会瞬间输出大量结果,完全不会等待1秒。


修复方案

方案1:用箭头函数包裹回调

通过箭头函数创建一个匿名函数,作为setTimeout的回调,这样只会在延迟时间到后才执行simpleFunction(b):

function simpleFunction(FFF) {
    const b = FFF + 1;
    console.log(b);
    setTimeout(() => simpleFunction(b), 1000);
};

// 传入初始值,比如0
simpleFunction(0);

方案2:使用bind绑定参数

利用Function.prototype.bind创建一个绑定了参数的新函数,避免立即执行:

function simpleFunction(FFF) {
    const b = FFF + 1;
    console.log(b);
    setTimeout(simpleFunction.bind(null, b), 1000);
};

simpleFunction(0);

内容的提问来源于stack exchange,提问作者Миркин Алексей

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:45:51