回调地狱


回调地狱代码缺点:1:代码可复用性不强
2:可阅读性差
3:可维护性(迭代性差)
4:扩展性差

回调地狱详细代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            padding: 0px;
            margin: 0px;
        }

        .tpl {
            display: none;
        }

        .wrapper {
            overflow: hidden;
            border: 2px solid black;
            width: 600px;
            margin: 100px auto 0px;
        }
        .movieSection {
            float: left;
            width: 180px;
            height: 180px;
            padding: 10px;
        }
        
        .movieSection img {
            width: 100%;
            height: 150px;
            cursor: pointer;
        }

        .movieSection h3 {
            height: 30px;
        }
    </style>
</head>
<body>
    <!-- 基本结构 -->
    <div class="wrapper">
        <div class='tpl'>
            <img src=""></img>
            <h3 class='movieName'></h3>            
        </div>
    </div>     

    <script src='./jquery.js'></script>
    <script>
        // 回调地狱

        // 设计模式 六大原则
        // 单一职责原则  开闭原则
        $.ajax({
            url: 'https://easy-mock.com/mock/5c09f40d3c098813c612cce6/movie/power',
            type: 'POST',
            data: {
                username: 'cst',
                password: '123123'
            },
            success: function (res) {
                if (res.data.power == 'root') {
                    // vip 网络地址发送请求
                    $.ajax({
                        url: 'https://easy-mock.com/mock/5c09f40d3c098813c612cce6/movie/movieList',
                        type: 'GET',
                        success: function (res) {
                            console.log(res)
                            var data = res.data;
                            var $Wrapper = $('.wrapper');
                            $.each(data, function(index, ele) {
                                // ele.name  ele.poster
                                var $MovieSection = $('.tpl').clone().removeClass('tpl').addClass('movieSection');
                                $MovieSection.data({id: ele.id}).on('click', function (){
                                    
                                    $.ajax({
                                        url: 'https://easy-mock.com/mock/5c09f40d3c098813c612cce6/movie/movieInfo',
                                        type: 'GET',
                                        data: {
                                            movieId: $(this).data('id')
                                        },
                                        success: function (res) {
                                            var data = res.data;
                                            var direct = data.direct;
                                            var gut = data.gut;
                                            var mainActor = data.mainActor;
                                            var screenWriter = data.screenwriter;

                                            var htmlStr = '<div class="mask">\
                                                <p>导演: ' + direct + '</p>\
                                                <p>剧情: ' + gut + '</p>\
                                                <p>主演: ' + mainActor.reduce(function (prev, curv) {
                                                    prev += curv + ' ';
                                                    return prev;
                                                }, '') + '</p>\
                                                <p>编剧: ' + screenWriter.reduce(function (prev, curv) {
                                                    prev += curv + ' ';
                                                    return prev;
                                                }, '') + '</p>\
                                            </div>'

                                            $(htmlStr)
                                                .appendTo('body')
                                                    .css({position: 'absolute', left: $(window).outerWidth() / 2, bottom: 100, width: 400, marginLeft: -200});
                                        }
                                    });
                                }).children()
                                    .eq(0).attr('src', ele.poster)
                                        .next().text(ele.name);

                                $Wrapper.append($MovieSection);
                            });
                        }
                    })
                }else {
                    // 非vip 
                }
            }
        });



        //  $.Deferred();

        // 
        // $.ajax();


    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值