es6(回调地狱)
2017-10-24 本文已影响233人
余生筑
如果有多个异步操作,就存在一个流程控制的问题:确定操作执行的顺序,以后如何保证遵守这种顺序。
比如
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);