promise是一门新的技术(ES6规范),是JS中进行异步编程的新解决方案(旧方案是使用回调函数)。
promise从语法上来说是一个构造函数,从功能上来说,promise对象用来封装一个异步操作并可以获取其成功/失败的结果值。
异步编程有哪些? filesystem操作,数据库操作,ajax请求,定时器。
promise的优点:
1.指定回调函数的方式更加灵活 。
回调函数必须在异步任务前指定,而promise的执行流程为:启动异步任务 =》返回promise对象 =》给promise对象绑定回调函数(甚至可以在异步任务结束后指定);
2.支持链式调用,可以解决回调地狱问题。
回调地狱:回调函数嵌套调用,外部回调函数异步执行的结果是嵌套的回调执行的条件
回调地狱不便于阅读,不便于异常处理。
promise的状态:
promise实例对象拥有一个属性 PromiseState,有三个属性 pending 未决定的,resolved/fullfilled成功的,rejected失败。
promise实例对象的状态只可能拥有两种,1.pending变为resolved。2.pending变为rejected。一个promise对象只可能改变一次状态,成功的结果数据成为value,失败的结果数据称为reason。
promise实例对象状态结果保存在属性PromiseResult中。
promise执行流程: