promise
promiseES6中其中专门用于同步的一个对象。
使用promise可以更加直观与方便实现JS的同步写法。
其它的一些同步方法都是以promise对象 为基础 进行扩展语法糖。
Promise对象的基础知识
基本信息:
Promise有三种状态:
- Pending(执行中)
- Fulfilled(成功状态)
- Rejected(失败状态)
三种状态的关系:
Pending -> Fulfilled
Pending -> Rejected
实例化中的Promise在构造中就有一个参数,这个参数也是一个回调函数。
并且这个回调函数默认就有两个参数resolve。成功的回调函数,用于接收成功返回的值
rejcet失败的回调函数,用于接收失败的返回值
Promise对象在执行完成后。会进行完成状态,我们可以使用.then()这个方法来执行后续的操作
Promise对象在实例化中就会直接执行。
// 定义Promise对象
let pro = ()=>{
// 这个函数返回的是一个Promise对象
// 需要使用Promise对象时需要进行实例化
// resolve是成功时执行的函数, reject失败时执行的函数
let obj = new Promise(function (resolve, reject ){
console.log('开始')
// 模拟从后端获取数据
let n1 = 0
setTimeout(()=>{
n1 = 1000
console.log('获取成功,数据为:'+n1)
// 操作成功,调用成功的函数并且把需要传出的参数进行传参
resolve(n1)
}, 500)
});
return obj;
}
// 执行Promise对象。并且在完成任务之后再执行后续操作
let obj = pro();
obj.then((resolve)=>{
let obj2 = new Promise((resolve, reject)=>{
let n2 = resolve + 500
console.log('运算结果为:'+n2)
console.log('结束')
resolve(n2)
})
obj2.then()
})