如果有多個異步操作,就存在一個流程控制的問題:確定操作執行的順序,以后如何保證遵守這種順序。
比如
function async(arg, callback) {
callback(arg * 2);
}
function final(value) {
console.log('完成: ', value);
}
問題:如何借助async()得到128?
- 回調函數嵌套
async(1,function(data)
{
async(data,function(data)
{
async(data,function(data)
{
async(data,function(data)
{
async(data,function(data)
{
async(data,function(data)
{
async(data,function(data)
{
final(data)
})
})
})
})
})
})
})//完成: 128
- 用promise優化上述代碼
let async=(data)=>new Promise((resolve,reject)=>{
return resolve(data*2)
})
let final=value=>{
console.log('完成: ', value);
}
async(1)
.then(async)
.then(async)
.then(async)
.then(async)
.then(async)
.then(async)
.then(final);