同步的AJAX请求

时间:2017-05-22 13:52:59

标签: javascript ajax xmlhttprequest

我想编写一个javascript应用程序,以便向我的服务器执行同步 AJAX请求。

服务器在localhost上运行,因此负面影响没有问题。

为什么要同步?

由于它的'return'语句,脚本完全同步很重要。

我目前的代码:

function request(command) {
var re = new XMLHttpRequest();
var object = "";
re.open("POST","http://localhost:5400", true);
re.send(command);
re.onreadystatechange = function() {
  if (re.readyState == 4 && re.status == 200) {
    object = re.responseText;
  }
}
//That seems to be the problem
while (object == "") {}
return object

}

我知道使用while并不是最好的方式而且它不起作用(不明白为什么)

您是否有想法或更好的解决方案,以使异步请求同步?

我不想使用jQuery来做到这一点

2 个答案:

答案 0 :(得分:0)

要使请求同步,请将第三个参数更改为<a class="myLink" role="button" link="/client/workspace"> <i class="fa fa-laptop"></i> <span>Workspace</span> </a> Template.yourTemplate.events({ '.myLink': function (event) { event.preventDefault(); if (CONDITION) { // your code to redirect to event.target.link } } }) 。像这样:

re.open

有关详情,请参阅此处:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests。如果你这样做,你将不需要while循环。

然而,这不是好习惯。 Asynchronicity是JavaScript的基石。它确保在您访问其他资源时网页不会冻结。

答案 1 :(得分:0)

由于@Douglas_Tyler_Gordon和@Stephen_S的评论,我找到了一个可以接受的解决方案:

function shell(command,callback) {
var re = new XMLHttpRequest();
re.open("POST","http://localhost:5400", true);
re.send(command);
re.onreadystatechange = function() {callback(re);}
}