主要是两个疑问:
- 任务B这样的promise如何加到all里面?
- 怎么让另外一个任务依赖all?
getAll() {
this.loading = true
let self = this
//任务A
Promise
.all([apiGetFalvors(), apiGetImages()])
.then(([flavors, images]) => {
this.flavorList = flavors.data
this.imageList = images.data
})
.catch((err) => {
console.log(err)
})
//任务B
var p = new Promise(function(resolve, reject) {
self.getDesktopList(resolve)
});
//任务C
p.then(function() {
self.loading = false
self.refreshStatus()
})
.catch(function() {})
},
Promise
的本质是把回调函数用链式写法来表示,因此你的代码里A和B已经是并发的了Promise.all
方法用于将多个 Promise 实例,包装成一个新的 Promise 实例,也就是说Promise.all
返回的就是一个Promise,只不过它要在所有子任务都fulfilled后在会变成fulfilled,而只要有一个rejected它就会rejected。如果有任务D依赖它,放在任务A的then
里就好了