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

JavaScript:触发Promise的resolve后如何终止find5函数并退出?

解决find5函数找到元素后立即终止的问题

核心问题在于forEach的设计限制:它的回调里用return只能跳出当前迭代,没法终止整个循环,所以哪怕你调用了resolve(true),后续元素还是会被遍历输出。

要实现找到元素5后立刻终止整个函数,你得把forEach换成支持中断的循环结构,比如for...of或者普通for循环,具体代码如下:

方案1:用for...of循环

function find5(arr) {
  return new Promise((resolve) => {
    for (const num of arr) {
      console.log(num);
      if (num === 5) {
        resolve(true);
        break; // 终止循环,函数不再执行后续逻辑
      }
    }
  });
}

方案2:用普通for循环

function find5(arr) {
  return new Promise((resolve) => {
    for (let i = 0; i < arr.length; i++) {
      const num = arr[i];
      console.log(num);
      if (num === 5) {
        resolve(true);
        break; // 中断循环,直接停止函数执行
      }
    }
  });
}

测试调用find5([1,2,3,4,5,6,7,8,9,10]),会输出1 2 3 4 5 true,后续的6到10不会再被打印——因为break终止了循环,函数逻辑也随之停止。

内容的提问来源于stack exchange,提问作者Alex Goodie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:03:22