admin 管理员组

文章数量: 1087649

什么是地狱回调 / 解决回调地狱

前言

回调地狱就是函数作为参数层层嵌套,多用于ajax请求

在使用js是,为了实现某些逻辑经常会写出层层嵌套的回调函数

如果嵌套太多,就会影响到代码可读性和逻辑,这种情况就是会调地狱

一个异步请求嵌套另一个异步请求 ,另一个异步请求依赖于另一个的执行结果, 使用回调的方式相互嵌套,他会造成我们的代码可读性非常差 后期不好维护

 地狱回调例子

  ajax(url, () => {// 逻辑代码ajax(url, () => {// 逻辑代码ajax(url, () => {// 逻辑代码})})})

 解决方案

async / await

// async / awaitfunction all(arg, val) {return new Promise((resolve, reject) => {// 使用定时器模仿异步操作setTimeout(() => {resolve(arg + val)}, 1000)})}async function render() {let a = await all('start,', '1,')let b = await all(a, '2,')let c = await all(b, '3,over')console.log(c); // start,1,2,3,over}render()

Promise.then() 链式调用

//  promise.then() 的链式调用function all(arg1, arg2) {return new Promise((resolve, reject) => {setTimeout(() => {var result = arg1 + arg2resolve(result)}, 1000)})}all('start,', '1,').then(function (res) {return all(res, '2,')}).then(res => {return all(res, '3,')}).then(res => {console.log(res + 'over')})

本文标签: 什么是地狱回调解决回调地狱