浏览器根据同步XMLHttpRequest的whatwg规范警告。从警告中,弃用的原因很明显“用户体验”
我的问题是:
这是相关的,因为有几次我们需要使用async:false
。这不需要任何“复杂”方法,如数据绑定,Deffering甚至在.done()
或.fail()
方法中放置代码。 (使用Jquery时。)
Firefox抛出的警告:
主线程上的同步XMLHttpRequest因不推荐使用 它对最终用户的体验产生不利影响。获得更多帮助 http://xhr.spec.whatwg.org/
代码段( JQuery )生成警告的示例:
$.ajax({
url: url,
type: "GET",
data: {},
async: false,
success: function(data) {
//Do something
},
error: function(xhr, status, error) {
//Throw error message
}
});
//Wait for $.ajax to finish execution the continue ...
答案 0 :(得分:0)
同步方式可用于动态加载外部.js文件。如果使用imbricated回调,必须加载3或4个外部模块会引发回调地狱。相反,你可以像往常一样在加载你的html页面时,然后我们不关心用户体验" ?使用模块加载器会有什么帮助吗?
答案 1 :(得分:0)
好吧,我假设您需要使用它来加载此文件或数据,例如,当用户单击某些内容时要使用。这样您就可以这样做;
var lol = {};
var dataOutSide = null;
var xhr = new XMLHttpRequest();
xhr.responseType = 'json';
xhr.open('GET', 'https://api.nasa.gov/planetary/apod?api_key=NNKOjkoul8n1CH18TWA9gwngW1s1SmjESPjNoUFo');
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log(xhr.response); // use this to build if you need show this data when the page is loaded
dataOutSide = xhr.response; // use this to if you need show this data anytime after the page is loaded
} else {
console.error('big fail! :(');
}
}
};
xhr.send(); // and then you put you listeners like clicks inside $(document).ready(function ....
$(document).ready(function(){
$('#my-btn').click(function (event){
console.log(dataOutSide); // all stuff
$('body > div').append('<img src="'+dataOutSide.url+'" />') }); // when i click my btn show me the image ;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<head>
<title></title>
</head>
<body>
<div>
<button id="my-btn">show me ! </button>
</div>
</body>