asyncfunctionfetchUserParallel () {
constnamePromise=fetchName()
constavatarPromise=fetchAvatar()
return {
name:await namePromise,
avatar:await avatarPromise
}
}
(asyncfunction () {
console.time('should be 3s, but time is ')
constuser=awaitfetchUser()
console.log(user)
console.timeEnd('should be 3s, but time is ')
console.time('should be 3s : ')
constuser2=awaitfetchUserParallel()
console.log(user2)
console.timeEnd('should be 3s : ')
})()
async 顺序
并发请求
使用async的时候,代码执行的顺序很容易出错,比如我们要同时发起两个请求,可能会写出下面的代码
在上面的代码中,我们认为fetchName,fetchAvatar会并行执行,实际上并不会。fetchAvatar会等待fetchName执行完之后才开始请求。fetchUser函数的执行时间不是三秒而是7秒
要并行请求的话需要像下面这样写,fetchUserParallel的执行时间为4秒
使用Promise.all来并发请求
错误获取
使用try...catch
包装promise,使其返回统一的格式的代码
参考文章
继续使用catch