这里所说的异步解决方案,主要针对了多个异步操作,并且异步操作之间相互依赖,这里总结一下解决方案。
1、回调函数
这是最古老的方法,尽管能解决异步相互依赖的情况,但是当异步操作过多,多层嵌套的回调函数会让代码可读性非常差,也不够优雅,另外也没有比较好的错误处理机制,例如:
$.get(path1,function(data1){
$.get(path2,function(data2){
$.get(path3,function(data3){
console.log('done');
});
});
});
接下来是es6之后提出的一些解决方案:
2、promise
简单来说是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
promise对象有两个特点:
①对象的状态不受外界影响,有三种状态:pending(进行中)、fulfilled(已成功)、rejected(已失败),只有异步操作的结果,才能决定当前是哪种状态
②一旦状态发生改变,就不会再产生变化(pending-fulfilled,pending-rejected),这时候就称为resolved,如果改变已经发生,再给promise对象添加回调函数,也能得到结果,这与回调函数不同,回调