Appearance
串行
请求是异步的,需要等待上一个请求成功,才能发送下一个请求,导致回调地狱。
并行
同时发送多个请求,等待所有请求都成功再去做一些事。
Promise 解决串行
javascript
// 串行
function ajax1 () {
return new Promise((resolve, reject) => {
$.ajax({
url: './data.json',
success: result => {
resolve(result)
}
})
})
}
function ajax2 () {
return new Promise((resolve, reject) => {
$.ajax({
url: './data.json',
success: result => {
resolve(result)
}
})
})
}
function ajax3 () {
return new Promise((resolve, reject) => {
$.ajax({
url: './data.json',
success: result => {
resolve(result)
}
})
})
}
// 1
ajax1()
.then(data1 => ajax2(data1))
.then(data2 => ajax3(data2))
.then(data3 => console.log(data3))
// 2
async function getData () {
const data1 = await ajax1()
const data2 = await ajax2(data1)
const data3 = await ajax3(data2)
console.log(data3)
}Promise 解决并行
javascript
Promise
.all[ajax1(), ajax2(), ajax3()]
.then(val => {
console.log(val)
})