欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

promise的个人理解

程序员文章站 2022-03-05 07:56:35
...

promise概述

  • Promise是抽象异步处理对象以及对其进行各种操作的组件,可以将复杂的异步处理轻松的进行模式化。其实就是分模块的去按部就班的去处理一些操作,比如,我们需要执行代码块,然后获取返回值再去拿着这个返回值去进行下面的操作,这个时候我们就是可以去使用promise
  • 在js中 代码是单线程的,所以在上述的行为中我们可以通过回调函数去解决上述问题,但是但是回调函数一层层的太多了就有麻烦了,promise就是可以很方便的去解决了这个麻烦 写个列子
// 我们的需求是获取id然后去根据id去操作其他
function getId(){
  return new Promise(function(resolve, reject){
    fetch(url).then(res => {
      resolve(res)
    }).catch( error => {
      reject(error)
    })
  })
}
getId().then(id => {
  //这个适合就是我们拿到id的时候
}).catch(error => {
  //返回错误id的时候执行
})

promise的实现

  • 首先promise存在三个状态 也是互斥的唯一状态pending(等待中) resolve(解决) reject(拒绝)
    过程就是根据你的操作去返回解决或者拒绝,拒绝即结束 接下来的链式结果也即结束,如果请求返回为真也继续执行
let p1 = new Promise(function(resolve, reject){
  resolve()
})
p1.then(...).then(...).then(...).catch(...)
  • 还就两种情况可以认为是并集和或者执行 如下p1和p2都通过可以继续执行
let p1 = new Promise(...)
let p2 = new Promise(...)
// 都返回结果执行
Promise.all([p1,p2]).then(...)
// 只要有一个率先返回解决就执行
Promise.race([p1,p2]).then(...)
相关标签: promise