JavaScript重难点解析6(Promise
概念
为什么要使用Promise
1.指定回调函数的方式更加灵活
2.支持链式调用, 可以解决回调地狱问题
回调地狱:回调函数嵌套调用, 外部回调函数异步执行的结果是嵌套的回调执行的条件
Promise 的状态
实例对象中的一个属性 『PromiseState』
- pending 未决定的
- resolved / fullfilled 成功
- rejected 失败
Promise 对象的值
实例对象中的另一个属性 『PromiseResult』
保存着异步任务『成功/失败』的结果
- resolve
- reject
Promise工作流程
基本用法
Promise是ES6引入的异步编程的新解决方案。用来封装异步操作并可以获取其成功或失败的结果。
promise对象需要传入一个函数,函数接收两个参数resolve和reject,代表成功状态和失败状态,当函数中代码执行到resolve时promise对象会进入成功状态,执行到reject代表promise进入失败状态。Promise一般通过then方法调用,then方法接受两个回调函数,第一个代表成功状态的回调,第二个代表失败状态的回调。
基本使用如下:
//实例化 Promise 对象
const p = new Promise(function(resolve, reject){
//也可以不叫resolve, reject自己指定参数名
setTimeout(function(){
//
// let data = '数据库中的用户数据';
// resolve
// resolve(data);//data在为then调用时的value
let err = '数据读取失败';
reject(err);//err为then调用时的reason
}, 1000);
});
//调用 promise 对象的 then 方法
p.then(function(value){
console.log(value);
}, function(reason){
console.error(reason);
})
//失败还可以通过catch指定
p.catch