一、Promise对象介绍
ES6原生提供了Promise对象,它表示未来要发生的事件,相当于一个容器,保存着异步操作的一些结果。各种异步操作都可以用同样的方法进行处理。
特点:
- 对象的状态不受外界影响 处理异步操作 三个状态:Pending(进行) Resolved(成功) Rejected(失败)
- 一旦状态改变,就不会再次改变,任何时候都可以得到这个结果
二、基本使用
可以使用new来创建一个Promise对象的一个实例。
let prom = new Promise(function(resolved, rejected) {
}
Promise包含一个回调函数,有resolve和reject两个参数,如果函数在调用时执行操作正常,则会调用resolve,否则调用reject。
实例
function timeOut(ms) {
return new Promise((resolved, rejected) => {
setTimeout(() => {
resolved("success!!")
}, ms);
})
}
timeOut(2000).then((val) => {
console.log(val);
})
我们定义一个超时函数,返回一个Promise对象实例,然后我们调用它,.then()方法返回成功的返回值success。
三、用Promise封装Ajax
我们可以用promise封装一个类似于Ajax的函数。
const getJSON = function(url) {
// 返回一个promise对象
return new Promise((Resolved, Rejected) =