作用:主要是异步处理,一共三种状态(padding,fulfilled,reject),分别代表进行,成功,失败,状态不可变
使用:它主要在一个函数体内return出去,函数执行时,可能存在异步过程,在主函数前面加上async,在主函数调用时候,前面加上await。
结构:promise里面包含的是一个函数体,函数体内部包含两个形参(reslve,reject),函数体时具体业务相关逻辑,比如请求一个数据成功或失败分别怎么操作等等
方法:①then返回的是一个成功状态的promise,下个then就可以链式调用了;②:catch返回一个失败的promisi,下一个catch链式调用;③finally方法时成功失败都执行;④all方法,传入一个promise数组,执行所有成功promise,如果有一个失败,就返回失败的promise;rase()将最先promise输入,如果有一个失败,还是会返回最先的promise。
举例:一共四个函数,ont()、two()、three()、run(),two()中存在异步,如果想要按照顺序执行,two()会发生undefined,在经过primise处理之后,three()会等着two()处理完成再执行。
<script>
function one() {
return 'i am one'
}
function two() {
return new Promise((resolve, reject) => {
// setTimeout(() => {
// resolve('i am two')
// }, 3000)
resolve('success')
reject('full')
}).then(res => console.log(`sesolve成功`, res))
.catch(err => console.log(`reject失败`, err))
.finally(() => {
console.log('成功失败都执行'); //请求接口,loding状态,在这个地方调用
})
}
function three() {
return 'i am three'
}
async function run() {
console.log(one());
console.log(await two());
console.log(three());
}
run()
</script>