js系列(更新中)- promsie异步处理的方法之一

本文详细介绍了Promise的实现原理,包括其状态转换和链式调用机制。此外,讨论了Promise的主要API,如then、catch和all/race的区别,并通过封装ajax展示了Promise在实际应用中的价值。Promise的出现旨在解决回调地狱问题,但无法直接取消操作,错误需通过回调捕获。
摘要由CSDN通过智能技术生成

Promise就是为了解决callback的问题而产生的。

Promise 实现了链式调用,也就是说每次 then 后返回的都是一个全新 Promise,如果我们在 then 中 return ,return 的结果会被 Promise.resolve() 包装

优点:解决了回调地狱的问题

ajax('XXX1')
  .then(res => {
      // 操作逻辑
      return ajax('XXX2')
  }).then(res => {
      // 操作逻辑
      return ajax('XXX3')
  }).then(res => {
      // 操作逻辑
  })

缺点:无法取消 Promise ,错误需要通过回调函数来捕获

补充:axios 怎么做到取消的,axios因为有cancelToken机制,就可以做到取消axios请求

1、promise实现原理

简单的来说,promise是一个简单的容器,里面存放着未来可能结束的事件,一般为异步操作的结果。语法上说,promise是一个对象,他可以获取异步操作的信息。提统一的api,各种操作结果都可以以同样的方法操作。

它的特点是:

(1)对象的状态不受外界影响。promise代表一个异步操作,有三种状态:pending(进行中),resolved(已成功),rejected(已失败)。只有异步操作的结果可以决定是哪一种状态,任何其他操作都无法改变这种状态。
(2)一旦状态改变,就不会再改变了,任何时候都是可以得到这个结果的。状态的改变只有两种可能:从pending变为resolved和从pending变为rejected。只要这两种状态发生,状态就 不会改变了。

它的使用:

promise是一个对象,首先需要实例化一个对象,promise构造函数中传递一个函数,该函数用于处理异步操作的结果。函数中接收两个回调函数resolve和reject作为参数,分别用处理成功和失败两种情况。promise实例生成后,可以用then方法分别指定resolved和reje

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值