同步语句:语句执行完成之前,后面的语句不执行。
异步语句:执行后,js引擎会产生一个异步对象,后面的语句不会等待异步对象执行完成,会直接执行。
我们之前settimeout、事件、nodejs基本上所有操作都是异步、数据库的所有操作都是异步。
我们通常需要异步操作以同步的方式去执行(以及其他)
如果需要同步执行的异步操作数量很多,那么回调函数嵌套的层数也会很多,不利于阅读,修改。这个就叫做“回调地狱”。
es6为了解决回调地狱的问题,引入了promise对象及对应的语法糖来解决。
Promise对象
promise对象是es6定义的异步操作对象,它的建立:
const promise = new Promise();
const promise1 = new Promise(function(resolve, reject){
})
promise对象在建立的时候,需要一个函数参数。
promise对象建立的时候会立即调用参数(函数)且传入两个方法resolve,reject。
promise对象表示一个异步操作对象,在建立之初promise对象的状态是pending(进行中)
promise对象一旦调用了resolve,reject两个方法之一,那么它的状态就会发生改变
调用resolve()方法,promise对象的状态会从pending(进行中)变为fulfilled