Promise

Promise 写法

//构造一个Promise
const promise = new Promise((resolve, reject) => {
    // resolve 或者  reject只返回一个 一次 然后就会停止监听了
    // setTimeout(() => {
    //     resolve("这是返回的结果")
        
    // }, 2000);
    setTimeout(() => {
     reject(Error("这是错误的信息结果"))
    }, 3000);
})
//监听这个promise返回结果
promise.then(result => {
    console.log(result)
}).catch(err => {
    console.log(err)
})

Promise 的then方法参数为两个,第一个回调函数为result回调,第二个为error的回调函数

在Promise的.then中return的值默认即为返回一个Promise.resolve 我们可以通过继续.then来获取这个返回的值

2181551322657_.pic_hd

2191551324230_.pic_hd

Promise实例

Promise链式调用

多个Promise

  1. Promise.all()
    参数为promise对象数组 只有当数组中的promise都resolve 才then结果为按顺序请求数组中的promise的resove,否则只要有一个请求reject 执行catch方法不再等待其他请求结果

    const userPromise = new Promise((resolve, reject) => {
        setTimeout(() => {
    resolve("这是user请求")
    }, 1000);
    })
    const namePromise = new Promise((resolve, reject) => {
    setTimeout(() => {
    resolve("这是name请求")
    }, 2000);
    })
    Promise.all([userPromise, namePromise])
    .then(response => {
    console.log(response)
    //["这是user请求", "这是name请求"]
    })
    .catch(err => {
    console.log(err)
    })
  2. Promise.race()

    参数为promise对象数组,只会返回该数组中请求最快完成的resolve或者reject结果

    const userPromise = new Promise((resolve, reject) => {
        setTimeout(() => {
    resolve("这是user请求")
    // reject("user请求失败")
    }, 1000);
    })
    const namePromise = new Promise((resolve, reject) => {
    setTimeout(() => {
    // resolve("这是name请求")
    reject("name请求失败")
    }, 2000);
    })
    Promise.race([userPromise, namePromise])
    .then(response => {
    console.log(response)
    //这是user请求
    })
    .catch(err => {
    console.log(err)
    })