常见的异步编程方式有:回调函数、事件监听、ES6的promise。而promise是用来解决回调噩梦的,当无数个回调函数嵌套那将是灾难性的,promise相当于是将回调函数用一种更简单明了的方式改写。
promise其实是一个构造函数,其接受一个函数作为参数(函数中则有resolve和reject两个参数,分别表示执行成功与失败时的回调函数)。将我们的异步方法用promise进行封装。即:
function icessun(){
var p=new Promise(function(resolve,reject){
setTimeout(function(){
console.log('icessun');
reslove('icessun2');
},2000);
});
return p; // 返回p实例,使其可以使用Promise原型上面的方法
}
icessun(); // 调用执行icessun函数 得到一个Promis对象
// 也可以直接这样调用
icessun().then(function(data){console.log(data); // icessun2// 一些其他的操作// .....
});
最后结果返回一个promise对象,我们就可以使用链式调用的方法去执行回调函数,即then里面的函数。promise提供then方法加载这成功时的回调函数,catch方法捕捉执行过程中出现的错误,这样对于多层回调函数来说,是非常简洁与方便的。