了解为什么要用promise首先了解一下什么叫做回调地狱。
回调地狱是指:多层嵌套函数,函数的返回值是下一个函数的执行条件。
举例:
a(
function (r){
b(r,function(nr){
c(nr,function(nr2){
console.log(nr2)
},failback)
},failback)
}
,failback)
如上代码,多层嵌套,代码看着就很乱。
解决方式有两种:
1、promise链式解决
a().then(r=>return b(r))
.then(nr=>return c(nr))
.then(nr2=>console.log(nr2))
.catch(failback)
2、async/await高级解决
async function request (){
try{
const r=await a();
const nr=await b(r);
const nr2=await c(nr);
console.log(nr2);
}catch(error){
failback(error)
}
}
总结:
为什么要用promise?
- 指定回调函数的方式更加灵活;
旧的:必须在启动异步任务前指定;
promise:启动异步任务----> 返回promise对象---->给promise对象绑定回调函数 - 支持链式调用,可以解决回调地狱问题。
回调地狱缺点:不便于阅读,不便于异常处理;