promise 是什么?
promise是js中进行异步编程的新的解决方案,在此之前异步编程的解决方案是回调函数;Promise是一个构造函数,通过promise对象封装一个一步操作并获取结果。
promise 有三种状态 pending resolved rejected
- pending 到 resolved
- pending 到 rejected
状态不可改变且只能改变一次。
promise的基本使用
const p = new Promise((res,rej)=>{
setTimeout(()=>{
const t = Date.now()
if(t%2===0){
res(t)
}
else{
rej('error')
}
},0)
})
p.then(
value=>{
console.log('value :>> ', value);
},
err=>{
console.log('err :>> ', err);
}
)
回调函数和promise的异同
1、普通回调函数必须在启动前指定回调,promise 启动异步任务,返回一个promise对象,然后再绑定回调函数,而这个绑定回调函数可以在异步函数中调用。
2、promise支持链式调用,可以解决地域回调问题。(async/await更优雅)