基于PROMISE解决回调地狱问题
Posted angle-xiu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于PROMISE解决回调地狱问题相关的知识,希望对你有一定的参考价值。
回调地狱问题:
在使用javascript时,为了实现某些逻辑经常会写出层层嵌套的回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱。比如说你要把一个函数 A 作为回调函数,但是该函数又接受一个函数 B 作为参数,甚至 B 还接受 C 作为参数使用,就这样层层嵌套,人称之为回调地狱,代码阅读性非常差。
例如:要发送三个异步的请求要求前面一个请求完成之后再依次发送请求。
$.ajax url:‘url1‘, success:result=> $.ajax url:‘url2‘, success:result=> $.ajax url:‘url3‘, success:result=> ; ; ;//这就是一个栗子
基于PROMISE解决
Promise:ES6新增的内置类,是为了管理异步操作的。
//封装成多个方法 let queryA = function() return new Promise(resolve=> $.ajax( url:‘url1‘, success:resolve, ); ); let queryB = function() return new Promise(resolve=> $.ajax( url:‘url2‘, success:resolve, ); ); let queryC = function() return new Promise(resolve=> $.ajax( url:‘url3‘, success:resolve, ); ); //先将queryA返回的实例赋给promise,每次执行then都会返回新的Prmise实例 let promise = queryA(); promise.then(result=> console.log(1); return queryB();//将queryB的实例返回作为下一个的实例用于调用下一个then ).then(result=> console.log(2); return queryC(); ).then(result=> console.log(3); );
以上是关于基于PROMISE解决回调地狱问题的主要内容,如果未能解决你的问题,请参考以下文章
面试题系列---什么是Promise,解决什么问题?Promise.all解决了什么问题?实现原理?回调地狱?