我正在使用Ember.js和node.js制作的Web应用程序,可以选择在3种语言之间切换。单词存储在json文件中。截至目前,我正在使用同步ajax调用来获取所有页面的数据(大约7或8个调用)。 功能
function translate(iso,coll)
{
var x = jQuery.parseJSON(
jQuery.ajax({
url: window.location.origin+'/translate?iso='+iso+'&coll='+coll,
async: false,
dataType: 'json',
success : function(){
}
}).responseText
);
console.log(x);
return x;
};

答案 0 :(得分:1)
创建叠加部分,将其隐藏以进行初始加载。当你点击按钮并调用翻译功能时,显示覆盖并将其隐藏为成功回调的时间。
<强> HTML 强>
<div id="dvLoading" style="
width: 100%;
height: 100%;
background: rgba(0,0,0,0.2);
position: fixed;
top: 0px;
left: 0px;
display: none;
">
Loading
</div>
<强> JAVASCRIPT 强>
function translate(iso,coll)
{
$("#dvLoading").show();
var x = jQuery.parseJSON(
jQuery.ajax({
url: window.location.origin+'/translate?iso='+iso+'&coll='+coll,
async: false,
dataType: 'json',
success : function(){
$("#dvLoading").hide();
}
}).responseText
);
console.log(x);
return x;
};
答案 1 :(得分:0)
<强> AJAX 强>:
Ajax(也是AJAX; /eɪdʒæks/;异步JavaScript和 XML)1 [3]是一组相互关联的Web开发技术 在客户端用于创建异步Web应用程序。同 Ajax,Web应用程序可以向服务器发送数据和从服务器检索 异步(在后台)不干扰 显示现有页面的行为。可以使用检索数据 XMLHttpRequest对象。尽管有这个名字,但XML的使用并非如此 必需(JSON通常用于AJAJ变体),请求也是如此 不需要异步。[4]
取自here。
正如您所看到的,根据定义,AJAX是异步的,因此使其同步是矛盾的和次优的。您需要修改您的功能,因此您的请求可以异步运行,并且所有依赖于它的请求都将在.done()
或success()
中初始化/计算。阅读更多here。