Web前端 -- ES6 -- Promise

Web前端 -- ES6 -- Promise

服务器模拟数据

studen.json
{
  "id": 100,
  "name": "jack",
  "class_id": 10
}

class_10.json
{
  "id": 10,
  "name": "java工程师班级",
  "student_num": 30,
  "school_id": 9
}

studen.json
{
  "id": 100,
  "name": "jack",
  "class_id": 10
}

ajax回调地狱

    <script type="text/javascript" src="jquery-3.6.0.min.js"></script>
    <script type="text/javascript">
        $.ajax({
            url: "studen.json",
            success(replyData) {
                console.log("1replyData = ", replyData);
                $.ajax({
                    url: `class_${replyData.class_id}.json`,
                    success(replyData) {
                        console.log("2replyData = ", replyData);
                        $.ajax({
                            url: `school_${replyData.school_id}.json`,
                            success(replyData) {
                                console.log("3replyData = ", replyData);
                            },
                            error(err) {
                                console.log("err = ", err);
                            }
                        })
                    },
                    error(err) {
                        console.log("err = ", err);
                    }
                })
            },
            error(err) {
                console.log("err = ", err);
            }
        })
    </script>

使用Promise重排改善

<script type="text/javascript" src="jquery-3.6.0.min.js"></script>
    <script type="text/javascript">
        //Promise重排抽取模板工具方法
        function getPromise(url, data){
            return new Promise((resolve, reject) =>{
                $.ajax({
                    url:url,
                    data: data,
                    success(replyData){
                        resolve(replyData)
                    },
                    error(err){
                        reject(err)
                    }
                })
            })
        }

        //实现代码
        getPromise("studen.json")
            .then(replyData => {
                console.log("1replyData = ", replyData)
                return getPromise(`class_${replyData.class_id}.json`)
            })
            .then(replyData => {
                console.log("2replyData = ", replyData)
                return getPromise(`school_${replyData.school_id}.json`)
            })
            .then(replyData => {
                return console.log("3replyData = ", replyData)
            })
            .catch(err => {
                console.log("err=",err)
        })

    </script>
posted @   邵泽龙  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示