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来获取这个返回的值
Promise实例
Promise链式调用
多个Promise
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)
})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)
})