Promise:
学习任何知识点前,我们总要知道,这个东西的由来和存在的意义,以便我们能更好理解知识。
promise是什么?
Promise是异步编程的一种解决方案,从语法上讲,Promise是一个对象,可以获取异步操作的消息是引用
promise存在的意义:
避免回调地狱的问题
Promise对象提供了简洁的API,使得控制异步操作更加容易
基础用法
new Promise(function(resolve,reject){
//resolve方法会被then捕获
//reject方法会被catch捕获
})
new Promise(function(resolve,reject){
//resolve方法会被then捕获
setTimeout(()=>{
resolve('会被then捕获')
},1000)
}).then(res=>{
console.log(res)
})
new Promise(function(resolve,reject){
//reject方法会被catch捕获
setTimeout(()=>{
reject('会被catch捕获')
},1000)
}).then(res=>{
console.log(res)//不会执行这里
}).catch(err=>{
console.log(err)
})
Promise三种状态
pendding //正在请求
resolved //成功
rejected //失败
promise的方法
关于promise方法的解释及用法我这里就不再细说,因为网上关于promise的解析文章太多了,而且作为初学者来看,前辈们的解析足够使用了。
then的用法:捕获resolve
catch方法:捕获throw及reject
all方法:参数是对象数组。以慢为准,等数组中所有的promise对象状态为resolved时,该对象就为resolved;
race方法:参数是对象数组。以快为准,数组中所有的promise对象,有一个先执行了何种状态,该对象就为何种状态,并执行相应函数
最后分享promise的链式调用简写
new Promise((reslove,reject)=>{
reslove('aaa')
}).then(res=>{
console.log(res);
//这里省略了new promise,直接返回参数
return res+111
}).then(res=>{
console.log(res);
return res+222
}).then(res=>{
console.log(res);
//出现throw链式中止,catch捕获
throw res+'出错了'
return res+333
}).catch(err=>{
console.log(err);
})