js加载顺序的问题(异步)

如下图,ajax里面已经改成了同步,可还是会先执行下面src引入的外部js文件内容后,再执行ajax里面的回调,何解?

clipboard.png
图片不清晰,我补充一下代码

<script>
        $.ajax({
            type:"get",
            url:'http://127.0.0.1:8081/',
            async:false,
            dataType:"jsonp",
            jsonpCallback:"cb",
            success:function(data){
                console.log(data);
                //栏目
                var stacks = '';
                for(var i in data){
                    stacks += "<div class=\"stack\" id=\"stack"+data[i].id+"\">";
                    stacks += "<h2 class=\"stack-title\"><a href=\"#\ data-text=\""+data[i].name+"\"><span>"+data[i].name+"<p style=\"font-size:6px;\">"+data[i].date+"</p></span></a></h2>";    
                    stacks += "</div>";
                }
                $("#theme").append(stacks);        
            }
        });    
    </script>
    <script src="js/modernizr.custom.js"></script>
阅读 3.3k
4 个回答

你使用的是 jsonp 请求, jsonp 不支持 async 参数

说白了,这个就不是 ajax 的请求,就涉及不到 async 参数同步异步的问题

赞成@iexn 的答案,补充说明一下,jsonp的原理是document.createElement('script') 然后把script标签插入页面中执行script标签里面的函数形成回调的

zepto其中的代码

document.head.appendChild(script)

此时浏览器会继续加载body中的后续代码,然后再回过头来加载该script标签,加载完成之后才会执行回调

具体可以参考zepto的ajax的jsonp的实现

因为是先加载文件,再执行程序。

大哥,敢不敢把图给清楚一点,这样别人咋回答

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题