一:Promise对象的含义
一个对象,里面存着某个未来才会结束的事件(异步操作)
有三个状态:
1.pending 进行中
2.fulfilled(resolved) 成功
3.rejected 失败
状态改变只能由异步操作的结果决定
1.pending----resolved 进行中变为成功
2.pending----rejected 进行中变为失败
二:Promise用法
promise对象实质是一个构造函数,接受一个函数作为参数,该函数有两个参数resolve和reject
在jquery中我们的异步操作一般写在回调中,若出现多个异步,回调嵌套着回调,采用promise语法更简洁
1.创建实例
const promise=new Promise(function(resolve,reject){
if (/* 异步操作成功 */){
resolve(value);//进行-成功
} else {
reject(error);//进行-失败
}
})
resolve() 使状态由pending----resolved
reject()使状态由pending----rejected
2.实例生成后使用then方法分别指定resolved,rejected状态下的回调函数
promise.then(function(value){执行成功函数},function(error){执行失败函数})
注意:成功状态下调用的回调函数的参数value即resolve(value)中的value
失败状态下调用的回调函数的参数error即reject(error)中的error
最好类似try--catch写法
promise.then(function(){成功}).catch(function(err){失败})
若实例中是普通函数,则会立即执行内容
let promise = new Promise(function () {
console.log('Hello World')
})//打印Hello World
若是异步函数如定时器,则需通过then方法调用回调函数才有效果
const promise=new Promise(function(resolve,reject){
setInterval(()=>(resolve('hh')),1000)//resolve()异步成功
})
promise.then(function(value){console.log(value)})//过1秒后打印hh