什么是Promise?
Promise是异步编程的一种解决方案,其实是一个构造函数,它的原型上有then和catch等方法。JS是单线程的语言,所以很多操作都是异步操作,而异步操作多由回调函数完成,这里边就会引出一个现象“回调地狱”即回调函数中有回调函数,这种现象会导致代码的可读性降低,为了解决这个问题我们选择使用Promise。
Promise的作用
防止出现回调地狱,提高代码的可读性,像同步操作那样去执行异步操作。
Promise的使用
//首先New一个Proise
let pro = new Promise(function(resolve,reject){
console.log("start");
resolve("okok");
console.log("end");
});
pro.then(function(data){
console.log(data);
})
Promise必须接受一个函数作为参数,函数中的两个参数名不是自定义的,是必须写成(resolve,reject)的。
Promise的原理
一个promise对象就代表一个异步操作,通过状态去管理异步操作。
状态
pending | 执行中 |
fulfilled | 完成,也就是执行了resolve() |
rejected | 失败,reject()执行 |
常见写法(放到function中使用)
function timeOut(){
let randNum = Math.random()*2;
console.log(randNum);
return new Promise(function(resolve,reject){
setTimeout(function(){
if(randNum > 1){
resolve();
}else{
reject();
}
},randNum*1000);
});
}
timeOut().then(function(){
console.log("ok");
},function(){
console.log("no");
})
打印结果