异步回调问题

异步回调出现的问题:
1、异步请求多的话,回调函数一层套一层,不利于后期的维护和理解

更深层次的原因:

2、无法正常检索堆栈的信息:
向服务器发送异步请求后,在服务器返回结果时调用异步函数,没办法使用try…catch捕获错误,因为发送异步请求的函数和回调函数不在同一个栈中,发送异步请求的函数在结束后就已经出栈了,而回调函数是新开了一个栈,所以用try…catch捕获不到错误,只能用return把错误返回出去

3、没办法判断多个异步函数是什么时候完成的,只能在更高级的作用域里面去声明很多变量交给内层的作用域(回调函数)去使用,导致这些变量有可能被其他的函数访问和修改,最终出现错误

代码:

异步回调问题
promise的用法的原理:

一步执行,最简单的代码:
异步回调问题
两步执行:
异步回调问题
对已完成的promise执行then

异步回调问题

then里面不返回promise

异步回调问题

执行结果:
异步回调问题