提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
Promise是什么
- 从语法上:Promise是一个构造函数
- 从功能上来说,用Promise的实例封装异步操作并获取结果
Promise的重要概念
1.Promise 有三种状态,等待中 pending、成功 resolved/fulfilled、失败 rejected
- 当Promise实例创建时,即为pending状态
- resolve(value) ---- 如果当前是pending就会变为resolved
- reject(reason) ---- 如果当前是pending就会变为rejected
- 抛出异常 ---- 如果当前是pending就会变为rejected
2.Promise的状态不可逆,一旦由等待--->成功,或者由等待--->失败,就不能再变更为其它的状态
1成功2
const promise1=new Promise((resolve,reject)=>{
resolve(1)
reject(0)
})
console.log(promise1)
//结果
Promise
[[Prototype]]: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: 1
2失败
const promise1=new Promise((resolve,reject)=>{
reject(0)
resolve(1)
})
console.log(promise1)
//结果
Promise {<rejected>: 0}
[[Prototype]]: Promise
[[PromiseState]]: "rejected"
[[PromiseResult]]: 0
Promise.then()
1.成功
new Promise((resolve,reject)=>{
resolve(1)
}).then(
value=>{console.log("value",value)},
reason=>{console.log("reason",reason)}
)
//结果
value 1
2.失败
new Promise((resolve,reject)=>{
reject(0)
}).then(
value=>{console.log("value",value)},
reason=>{console.log("reason",reason)}
)
//结果
reason 0
3.catch中处理异常
new Promise((resolve,reject)=>{
reject(0)
}).then(
value=>{console.log("value",value)},
).catch(
error=>{
console.log('error',error)
}
)
//结果
error 0
4 .返回非Promise的数据
then方法返回任意的非promise的值时,此时链式调用下一个then方法里执行的是成功的函数
new Promise((resolve,reject)=>{
resolve(1)
}).then(
value=>{console.log("value",value)},
).then(
value=>{console.log("成功",value)},
reason=>{console.log("失败",reason)}
)
//结果
value 1
成功 undefined
5.返回promise的数据
new Promise((resolve,reject)=>{
resolve(1)
}).then(
value=>{
console.log("value",value)
return Promise.resolve(2)}
).then(
value=>{console.log("成功",value)},
reason=>{console.log("失败",reason)}
)
//结果
value 1
成功 2
6.抛出异常
new Promise((resolve,reject)=>{
resolve(1)
}).then(
value=>{
console.log("value",value)
// return Promise.resolve(2)
throw new Error('错误')
}
).then(
value=>{console.log("成功",value)},
reason=>{console.log("失败",reason)}
)
//结果
value 1
失败 Error: 错误