ES6的Promise-解决回调地狱
2019-03-10 本文已影响0人
雪映月圆
如下面一段代码:
function demo(){
setTimeout(function(){
console.log(1);
}, 0);
}
demo();
console.log(2);
//会先打印2,再打印 1,如何让它先打印 1, 再打印 2呢?
通过ES6的Promise对象来解决:
function demo(){
return new Promise(function( resolve, reject){
setTimeout(function(){
console.log(1);
resolve("我打印完了,可以继续向下执行了");
});
});
}
demo().then(function( msg ){
console.log( msg );
console.log(2);
});
介绍
一个 Promise 对象可以理解为一次将要执行的操作(常常被用于异步操作),使用了 Promise 对象之后可以用一种链式调用的方式来组织代码,让代码更加直观。
Promise 对象中有两个重要方法————resolve 和 reject。
resolve 方法可以使 Promise 对象的状态改变成成功,同时传递一个参数用于后续成功后的操作
reject 方法则是将 Promise 对象的状态改变为失败,同时将错误的信息传递到后续错误处理的操作。
Promise基本语法
function fun(){
return new Promise(function(resolve,reject){
// 根据情况:resolve()或reject()
});
}
fun().then(suc,err)
//suc和err均为回调函数