promise简单总结


promise简单总结


提示:以下是本篇文章正文内容,下面案例可供参考

1. Promise对象的状态

他是Promise对象的一个属性,PromiseSate
他的取值有三种:

  • pending
  • resolved
  • rejected

2. Promise对象的值

他是Promise对象的一个属性,PromiseResult

3. Promise.resolve()

返回一个promise对象,状态是成功的

const p = Promise.reslove('123')

4. Promise.reject()

返回一个promise对象,状态是失败的

 const p = Promise.reject('123')

5. Promise.all()

参数一个promise对象组成的数组。返回一个新的promise对象
如果传入的promise对象中都是成功,则Promise.all()返回一个新的成功状态的promise对象,数据是入参数组中每个promise对象调用后返回的成功结果组成的数组
如果传入的promise数据中有失败的,则Promise.all()返回一个新的失败状态的promise对象。数据是入参数组中失败的promise数据返回的结果。如果有多个失败,则只返回第一个失败的promise对象的结果数据

            const p1 = new Promise((resolve, reject)=> {
    
    
              resolve('ok')
            })
            const p2 = Promise.resolve('p2')
            const p3 = Promise.resolve('p3')
            const p4 = Promise.reject('p4')
            const p5 = Promise.reject('p5')

            const r1 = Promise.all([p1, p2, p3])
            const r2 = Promise.all([p1, p2, p4])
            const r3 = Promise.all([p1, p4, p5])
            console.log(r1)
            console.log(r2)
            console.log(r3)

6. Promise.race()

参数一个promise对象成的数组。返回一个新的promise对象。状态取决于入参中第一个返回结果的promise对象
返回的是数组中,第一个返回结果的promise数据的结果。无论成功还是失败,第一个返回的结果,就是Promise.race()的返回结果

            const p1 = new Promise((resolve, reject)=> {
    
    
              setTimeout(()=> {
    
    
                resolve('p1')
              }, 300)
            })
            const p2 = new Promise((resolve, reject)=> {
    
    
              setTimeout(()=> {
    
    
                resolve('p2')
              }, 100)
            })
            const p3 = new Promise((resolve, reject)=> {
    
    
              setTimeout(()=> {
    
    
                resolve('p3')
              }, 200)
            })
            const p4 = new Promise((resolve, reject)=> {
    
    
              setTimeout(()=> {
    
    
                reject('p4')
              }, 50)
            })
            const r1 = Promise.race([p1, p2, p3])
            const r2 = Promise.race([p1, p2, p4])
            console.log(r1)
            console.log(r2)

7. promise的链式调用

const p = new Promsie()
cosnt result = p.then()
其中result也是一个promise对象(.then()返回的依旧是promise对象)。因此,也可以通过.then()进行调用,这就是promise的链式调用

8. async

通过ansyc修饰的函数,调用后返回的是promise风格的数据

  • returnpromise风格的数据,调用后的状态是成功,返回的内容是return
  • return的数据是promise风格,调用后的状态是取决于其内部promise数据的状态
  • throw一个异常,调用后的状态是失败,返回的内容是throw的内容
        async function test() {
    
    
        // return 123
        // return new Promise((resolve, reject)=> {
    
    
        //   resolve('成功了')
        // })
        throw '抛出异常'
      }

      console.log(test())

9. await

  1. await右侧一般是promise对象,也可以是其他类型的数据
  2. 如果是promise对象,await返回的是promise返回的正确的值,如果promise对象返回错误,要用try()catch(e){}进行接收
  3. awiat必须写在用async修饰的函数内部,但是用async修饰的函数内部,可以不写await
    const test = async () => {
    
    
      p1 = new Promise((resolve, reject)=> {
    
    
        resolve('成功了')
      })
      p2 = new Promise((resolve, reject)=> {
    
    
        reject('失败了')
      })
      try{
    
    
        const data1 = await p1
        console.log(data1)
      } catch(e) {
    
    
        console.log(e)
      }
      try{
    
    
        const data2 = await p2
        console.log(data2)
      } catch (e) {
    
    
        console.log(e)
      }
    }
    test()

猜你喜欢

转载自blog.csdn.net/weixin_46801545/article/details/128866043
今日推荐