1、回调地狱
- 回调地狱又称嵌套金字塔;
- 当一个回调函数嵌套一个回调函数的时候,就会出现一个嵌套结构;
- 当嵌套的多了就会出现回调地狱的情况;
- 回调地狱,其实就是回调函数嵌套过多导致的;
- 图示:

- 当代码成为这个结构以后,已经没有维护的可能了;
- 所以我们要把代码写的更加艺术一点;
- 所以就有了接下来的promise语法;
2、Promise
- promise是一个ES6的语法,是一个构造函数;
- 承诺的意思,是专门用来解决异步回调地狱的问题;
- 要创建一个promise对象,上面创建的对象就是q;
- 这个promise对象要传一个回调函数当参数;
- 这个对象有一个then()方法和catch()方法,参数也要传一个回调函数;
- then和catch这两个回调函数会被传到promise的回调函数里当参数;
- resolve代表的是then的回调函数;
- reject代表的是catch的回调函数;
- 直接resolve()就是执行then的回调函数,reject()就是执行catch的回调函数,同时只能执行一个函数;
- 一般我们promise回调函数里希望执行的是异步代码,当外面的代码都执行完了,再执行里面的代码,就是执行其他的回调函数;
- 下面用了定时器来实现异步的效果,等外面的代码执行完毕了,等2s再执行其他回调函数;
var q = new Promise(function(resolve,reject){//异步setTimeout(()=>{//成功兑现承诺resolve()//失败拒绝承诺//reject()},2000)})