js中的callback与promise的区别实际就是宽度和深度的区别
说起回调(callback),那可以说是JS最基础的异步调用方式
Promise:是一个返回对象,异步编程的一种解决方案(es6)可取代callback,解决多层嵌套,分离异步获取数据与业务逻辑,
可以链式调用,每次返回的是一个Promise对象
promise状态:
pending(进行中)--> resolve(成功) reject(失败) ,状态一旦设定,不可改变
pending-->resolve 进行中-->成功
pending-->reject 进行中-->失败
Promise.all // 所有的完成
Promise.all([p1,p2,p3])
Promise.race
Promise.all([a, b ,c]).then(res=> {
// 全部分会成功时调用
// 只要有一个失败,就返回失败的reject,其余取消
// res是一个数组,按照顺序分别储存a, b, c的返回结果 })
Promise.race([a, b ,c]).then(res=> {
// 某一个成功即可调用
// 常用于异步操作与定时器配合,制作网络超时
// res是首个返回的结果
})
async await
async+await 要一起使用,async定义函数 await要在async函数内部使用,等待一个异步结束
async function start () {
const w1 = await delay('孙悟空')
console.log(w1)
const w2 = await delay('猪八戒')
console.log(w2)
console w3 = await delay('沙悟净')
console.log(w3)
}