js中将回调地狱改装成promise方式的函数

概述:

回调地狱(Callback Hell)是指在异步编程中,多层嵌套的回调函数导致代码难以理解、维护和扩展的情况。

代码展示:

javascript 复制代码
ajax({
    url: '我是第一个请求',
    success (res) {
        // 现在发送第二个请求
        ajax({
            url: '我是第二个请求',
            data: { a: res.a, b: res.b },
            success (res2) {
                // 进行第三个请求
                ajax({
                    url: '我是第三个请求',
                    data: { a: res2.a, b: res2.b },
                    success (res3) {
                        console.log(res3)
                    }
                })
            }
        })
    }
})

解决方案:Promise

promise 就是一个语法

我们的每一个异步事件,在执行的时候

都会有三个状态,执行中 / 成功 / 失败

因为它包含了成功的回调函数

所以我们就可以使用 promise 来解决多个 ajax 发送的问题

javascript 复制代码
new Promise(function (resolve, reject) {
// resolve 表示成功的回调
// reject 表示失败的回调
}).then(function (res) {
// 成功的函数
}).catch(function (err) {
// 失败的函数
})

上面回调地狱改写为Promise方式:

javascript 复制代码
new Promise(function (resolve, reject) {
        ajax({
            url: '第一个请求',
            success (res) {
                resolve(res)
            }
        })
    }).then(function (res) {
    // 准备发送第二个请求
        return new Promise(function (resolve, reject) {
            ajax({
                url: '第二个请求',
                data: { a: res.a, b: res.b },
                success (res) {
                    resolve(res)
                }
            })
        })
    }).then(function (res) {
         ajax({
                 url: '第三个请求',
                 data: { a: res.a, b: res.b },
                 success (res) {
                     console.log(res)
                 }
         })
})
相关推荐
大橙子额3 分钟前
【解决报错】Cannot assign to read only property ‘exports‘ of object ‘#<Object>‘
前端·javascript·vue.js
WooaiJava1 小时前
AI 智能助手项目面试技术要点总结(前端部分)
javascript·大模型·html5
爱喝白开水a2 小时前
前端AI自动化测试:brower-use调研让大模型帮你做网页交互与测试
前端·人工智能·大模型·prompt·交互·agent·rag
Never_Satisfied2 小时前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
董世昌412 小时前
深度解析ES6 Set与Map:相同点、核心差异及实战选型
前端·javascript·es6
WeiXiao_Hyy2 小时前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
吃杠碰小鸡3 小时前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone3 小时前
C#使用Aspose.Words把 word转成图片
前端·c#·word
xjt_09013 小时前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农3 小时前
Vue 2.3
前端·javascript·vue.js