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

将含async/await的JS代码改写为纯Promise版本并修复time undefined问题

你改写代码的问题点

  • 逻辑结构混乱:将原始代码中独立的f1、f2、f3三个函数的逻辑错误合并到了同一个f1函数中,完全打乱了原有的执行顺序
  • 调用无参数:最后执行f1()时没有传入tempo参数,导致参数为undefined,控制台输出异常
  • 拼写错误:代码中出现了拼写错误Promisse,正确拼写应为Promise
  • 错误捕获位置错误:原始代码的错误捕获是针对整个异步流程的,你将catch写在了f1内部,不符合原始逻辑

正确改写版本

(function() {
  function exibirErro(err) {
    console.log(err.message);
  }

  // 对应原始f1,移除async,直接返回Promise
  function f1(tempo) {
    return new Promise((resolve, reject) => {
      const f = () => reject(new Error('Rejeitado'));
      console.log(`Aguardando ${tempo} segundos...`);
      setTimeout(f, tempo);
    });
  }

  // 对应原始f2,移除async,用Promise封装逻辑
  function f2(x) {
    return new Promise((resolve, reject) => {
      if ((Math.random() * 10) % 2 == 0) {
        reject(new Error('Ops'));
        return;
      }
      resolve(1000 * x);
    });
  }

  // 用Promise链式调用替代所有await逻辑
  new Promise(resolve => resolve(2))
    .then(r => f2(r))
    .then(t => f1(t))
    .catch(err => exibirErro(err));
})();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:09:04