Promise的初步认识
一、
Promise是异步编程的一种解决方案
二、什么时候需要处理异步编程?
1、网络请求
我们封装一个网络请求的函数,因为不能立即拿到结果,所以我们往往会传入另外一个函数
在数据请求成功时,将数据通过传入的函数回调出去,但是当网络请求非常复杂时,就会出现回调地狱
三、Promise的三种状态
当我们在开发中有异步操作时,就可以给异步操作包装一个promise
promise的三种状态:
1、pending:等待状态,比如正在进行网络请求,或者定时器没有到时间
2、fulfill:满足状态,当我们主动回调resolve时,就处于该状态,并且会回调.then()
3、reject:拒绝状态,当我们主动回调reject时,就处于该状态,并且会回调.catch()
方式:
new Promise((resolve,reject) = {
setTimeout(() => {
resolve(‘good message‘)
reject(‘error message‘)
}, 1000)
}).then(data => {
console.log(data)
console.log(data)
}).catch(err => {
console.log(err)
})
四、Promise的链式调用
无论是then还是catch都会返回一个Promise对象
所以代码是可以进行链式调用的:
Promise.resolve():将数据包装称Promise对象,并且在内部回调resolve对象
Promise.reject():将数据包装成Promise对象,并且在内部回调reject对象
五、Promise的简写方式
1、
return Promise.resolve(res+‘111‘);
return Promise.reject(res+‘222‘);
2、省略Promise.resolve
return res + ‘111‘;
throw ‘error message‘;