Promise的常见用法

Promise 是 ES6 中新增的一种异步编程解决方案。它可以将异步操作写成同步操作的形式,提供了更加便捷的读写方式,并且解决了传统回调函数带来的回调地狱问题。

一个 Promise 对象代表着某个异步操作的最终结果。一个 Promise 对象有三种状态:pending(进行中)、fulfilled(已成功) 和 rejected(已失败)。当 Promisepending 状态变为 fulfilled(已成功),则会调用 then 方法;当 pending 状态变为 rejected(已失败),则会调用 catch 方法。thencatch 方法都是返回新的 Promise 对象,因此可以链式调用。

一个最基本的 Promise 在创建后可以执行异步任务,并通过 resolvereject 方法告诉外界异步任务处理的结果,例如:

function asyncOperation() {
  const p = new Promise((resolve, reject) => {
    setTimeout(() => {
      const randomNumber = Math.random();
      if (randomNumber >= 0.5) {
        resolve(randomNumber); // 将异步结果传递给 then
      } else {
        reject('Error: Operation Failed!'); // 将错误信息传递给 catch
      }
    }, 1000);
  });
  return p;
}

function asyncOperationCaller() {
  asyncOperation()
    .then(result => {
      console.log('Operation succeed:', result);
    })
    .catch(error => {
      console.error('Operation failed:', error); 
    });
}

asyncOperationCaller();

在上面的代码中,我们定义了一个异步操作 asyncOperation(),并在其中创建了一个 Promise 对象。当异步操作成功后,我们调用了 resolve() 方法把异步任务处理的结果传递给了 then 方法,否则我们调用了 reject() 方法并传递错误信息给了 catch 方法。

最后,我们通过 asyncOperationCaller() 间接地调用 asyncOperation() 函数,并在 thencatch 方法中处理异步任务执行的结果。如果异步任务成功,则打印“Operation succeed”和异步任务的结果值;否则打印“Operation failed”和对应的错误信息。

可以看到通过 Promise 的方式处理异步任务,将异步任务的结果封装成一个对象,并在异步任务执行完成后将其传递给了 then 方法或 catch 方法进行处理。这种方式的好处是可以通过链式调用来进行优化,避免了传统回调函数的回调地狱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值