setTimeout的两个参数,你真的了解吗?

  1. 函数 setTimeout 接受两个参数:待加入队列的消息和一个时间值(可选,默认为0)。这个时间值代表了消息实际加入到队列的最小延迟时间。
  2. 如果队列中没有其他消息并且栈为空,在这段时间过去之后,消息会被马上处理。但是,如果有其他消息,setTimeout 消息必须等待其他消息处理完。
  3. 因此第二个参数仅仅表示最少延迟时间,而非确切的等待时间。
const s = new Date().getSeconds();

setTimeout(() => {
   // 输出“2”,表示回调函数并没有在 500 毫秒之后立即执行
  console.log(`Ran after ${new Date().getSeconds() - s} seconds`);

}, 500);

white(true) {
  if (new Date().getSeconds() - s >= 2) {
    console.log('Good, looped for 2 seconds');
    break;
  }
}

你可能感兴趣的:(setTimeout的两个参数,你真的了解吗?)