Deferred解决JS同步问题

 测试脚本:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="js/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
        function getData3(){       
            var defer = $.Deferred();
            $.ajax({
                url: 'v.aspx',
                //async : false, 
                cache: false,
                success: function (data) {
                defer.resolve(data)
            }
            });        
            return defer.promise();
        }


        $(document).ready(function () {
            $('.loadingicon').hide();
            $('#statm').click(function () {
            $('.loadingicon').show();
            $.when(getData3()).done(function(data){
                $('.loadingicon').hide();
                alert(data);
            });
            });


            var iii = 0;
            setInterval(function () {
                iii += 1;
                $("#sp").text(iii);

            }, 1000);

        });

    </script>
</head>
<body>
    <form id="form1" runat="server">
        <input  type="button" value="button"  id="statm" />
        <div class=".loadingicon">正在获取</div>
        <span id="sp"></span>
    </form>
</body>
</html>

  

参考页面:

http://www.cnblogs.com/aaronjs/p/3348569.html

http://www.111cn.net/wy/jquery/61811.htm

http://www.oschina.net/question/157182_49050

原文地址:https://www.cnblogs.com/LCX/p/4266654.html