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

编写指定规则Promise函数时出现UnhandledPromiseRejectionWarning报错如何解决

现有代码存在的问题
  • 未按需求封装为函数,直接实例化了Promise对象,既无法接收传入的data参数,也导致Promise在代码加载阶段就直接执行,触发data is not defined报错。
  • 逻辑判断存在错误,第二个分支else if(isNaN(data) && data%2!=0)的条件完全不成立:已经通过第一个if(isNaN(data))判断后,isNaN(data)必然为false,该分支永远不会执行。
  • 拼写错误:非数字场景下reject的内容写错为erroe,和需求要求的error不符。
  • 仅用isNaN判断是否为数字不够严谨,比如字符串'123'的isNaN返回结果为false,但本质不是数字类型。
修复后的代码
const job = (data) => {
  return new Promise((resolve, reject) => {
    // 校验是否为有效数字
    if (typeof data !== 'number' || isNaN(data)) {
      reject('error')
      return
    }
    if (data % 2 !== 0) {
      // 奇数1秒后返回resolved状态
      setTimeout(() => resolve('odd'), 1000)
    } else {
      // 偶数2秒后返回rejected状态
      setTimeout(() => reject('even'), 2000)
    }
  })
}

module.exports = job
调用测试示例
// 测试非数字参数
job('test').catch(err => console.log(err)) // 立即输出 error
// 测试奇数参数
job(5).then(res => console.log(res)) // 1秒后输出 odd
// 测试偶数参数
job(6).catch(err => console.log(err)) // 2秒后输出 even

内容的提问来源于stack exchange,提问作者Hiba Youssef

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:24:01