Promise.all([
Promise.all([
fetch('./add.c')
.then(res => {
res.text()
.then(res2 => {
console.log(1)
return Promise.resolve()
})
})
])
])
.then(res => {
console.log(2)
})
如上这段代码,打印顺序是 2 1
为什么呢?
因为 fetch(‘./add.c’).then 的返回结果不是一个 Promise,而是 undefined。要想顺序正确,需要改成这样:
Promise.all([
Promise.all([
fetch('./add.c')
.then(res => {
return res.text() // 这里加上 return
.then(res2 => {
console.log(1)
return Promise.resolve()
})
})
])
])
.then(res => {
console.log(3)
})
让 fetch.then 里的函数也返回一个 Promise 才能让整个 Promise 链完整。才能得到 1 2 的结果。
或者,把 res => 后面包裹的大括号去掉。总之,不管是简写箭头函数,还是完整的箭头函数,注意返回值要是 Promise。