了解js(promise)对象

提示:在js中,promise对象是用于处理异步操做的一种方式,它在ES6中被正式引入,现在已经成为了前端开发中非常重要的一部分

一、Promise能做什么?

        promise对象提供异步操做的最终完成或者失败,并且可以用一种更加优雅的方式处理异步调用,可以有效的避免回调地狱的情况。

二、Promise对象的特性

1.Promise对象有三种状态

  • pending(进行中)、resolved(已完成)、rejected(已失败)
  • 一旦Promise对象状态变为resolved或者rejected,就不能再变为其他状态了,而且会一直保持这个状态
  • Promise对象可以通过`.then()`方法来处理resolved状态,通过`.catch()`方法来处理rejected状态

2.promise对象的使用

代码如下(示例):

const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    const num = Math.random();
    if (num > 0.5) {
      resolve(num);
    } else {
      reject('数字小于0.5');
    }
  }, 1000);
});

promise.then((num) => {
  console.log(`得到了一个大于0.5的随机数字:${num}`);
}).catch((error) => {
  console.error(`发生了一个错误:${error}`);
});

     在这个例子中,我们创建了一个Promise对象,它会在1秒中之后返回一个随机数字,如果随机数字大于0.5,Promise对象就会进入resolved状态,返回这个数字;如果随机数字小于0.5,则Promise对象进入rejected状态,返回一个错误信息。我们通过`.then()`方法来处理Resolved状态,通过`.catch()`方法来处理Rejected状态。

 3.Promise对象的链式调用

        先了解一下什么是回调地狱。在实际项目中,我们需要根据第一个网络请求的结果,再去执行第二个网络请求,拿着第二个请求的结果再去执行第三个请求。那么代码应该长这样

请求1 (function (请求结果1) {
  请求2 (function (请求结果2) {
    请求3 (function (请求结果3) {
       ...
    })
  })
})

 实际应用中,每一个请求都会对请求数据进行处理,这样代码就会变得十分难看臃肿,而且基本上这段代码无法复用,如果业务需求再复杂一些,这个请求就要一直叠加下去。

 那Promise对象是如何解决这个问题的,写法如下

new Promise (请求1)
  .then(请求2(请求结果1))
  .then(请求3(请求结果2))
  .then(请求4(请求结果3))
  .then(请求5(请求结果4))
  .catch(...// 处理异常)

不难看出`.then()`方法本身就会返回一个新 promise ,所以Promise 对象必须 reslove 一个值才可以被之后的 then 接收。(如果没有 return 数据,下一个 then 接收的值就是 undefined


总结

提示:本文简单阐述了一下promise的使用方法,及可以解决的问题,力求简洁,起到抛砖引玉的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值