Javascript extjs同步ajax请求

Javascript extjs同步ajax请求,javascript,ajax,function,extjs,Javascript,Ajax,Function,Extjs,如何在ExtJS中进行同步ajax请求 例如,给定以下代码: test1(); ajaxRequest(); //Ajax Request test2(); test2函数的执行甚至没有完成ajaxRequest()的执行,它有一个Ext.Ajax.request调用 如何使text2()仅在执行ajaxRequest()函数后执行 我知道这样做的一种方法是在回调中调用test2函数,但我有一些依赖项和许多代码,必须在ajax请求之后以同步方式执行。您能帮我找到最佳解决方案吗?ExtJS不提供

如何在ExtJS中进行同步ajax请求

例如,给定以下代码:

test1();
ajaxRequest(); //Ajax Request
test2();
test2函数的执行甚至没有完成
ajaxRequest()
的执行,它有一个
Ext.Ajax.request
调用

如何使
text2()
仅在执行
ajaxRequest()
函数后执行


我知道这样做的一种方法是在回调中调用
test2
函数,但我有一些依赖项和许多代码,必须在ajax请求之后以同步方式执行。您能帮我找到最佳解决方案吗?

ExtJS不提供现成的同步请求功能。 事实上,他们强烈反对使用它们


你可能会发现讨论很有帮助

Extjs.Ajax
中,每个Ajax调用产生三种回调函数之一:

  • success
    在成功创建AJAX调用并获得响应时运行
  • failure
    在AJAX调用无法获得响应时运行
  • 在AJAX调用获得响应后运行的回调
如果要执行
test2()在ajax请求完成后,
然后将
test2
函数放入
成功
失败
回调
函数中;你选择哪一个取决于你

可以找到有关
成功
失败
功能的更多信息


注意:此方法不适用于ExtJS 3。

我需要类似的东西,在查看
Ext.Ajax.request()
Ext.data.Connection
的源代码后,我发现他们在
request()
方法上检查
async
属性,因此,实际上可以发出同步请求,像这样:

var response = Ext.Ajax.request({
    async: false,
    url: 'service/url'
});
var items = Ext.decode(response.responseText);

似乎这个
async
属性没有文档记录,所以。。。当然请注意,它可能会在将来的版本中更改。

这是2007年的讨论。5.0版本中记录了Ext.Ajax.request的async属性。请参阅5.0版本中Ext.Ajax.request的异步属性。请参见docs.sencha.com/extjs/5.0/apidocs/#/api/Ext.ajaxfor3.4我发现没有使用异步
var response = Ext.Ajax.request({
    async: false,
    url: 'service/url'
});
var items = Ext.decode(response.responseText);