我正在寻找一个用例中的最佳实践(使用 sencha touch 2 框架):
我有多个 ajax 调用(JSONP 响应),并且我想按所有这些响应之间的日期过滤提要数据。问题是我不知道什么时候开始过滤。我想知道所有ajax什么时候完成。
在 jQuery 中我会使用“promises”,例如:
$.when($.ajax("/page1.php"), $.ajax("/page2.php"), ... $.ajax("/pageN.php")).done(function(a1, a2){
// do something
});
, 我在 sencha touch 2 中找不到任何类似的“延迟”,或者您可以建议我另一种检测和加载数据的方法。
我很感激在这种情况下的任何建议帮助或最佳实践。
更新:
是的,我在任何地方都使用 sencha touch“Ext.Ajax.request”。
我尝试使用这样的东西来捕获所有请求:
Ext.Ajax.on('beforerequest', this.dosomething, this);
Ext.Ajax.on('requestcomplete', this.dosomething, this);
Ext.Ajax.on('requestexception', this.dosomething, this);
但是在这 3 种情况中的任何一种情况下,都不会被解雇,
PS:我尝试在我的主法师“初始化”时执行此事件,当我“午餐”整个应用程序时,在任何情况下它都不会触发任何东西。
我尝试触发事件的时间和方式是否有问题?
谢谢指教!!!
最佳答案
假设您正在使用 Ext.Ajax.request,并且想要同时发出所有请求,有几种方法可以做到这一点。当发出每个请求时,您可以增加一个简单的计数器,并在请求回调函数中减少该计数器。在回调函数中,还检查计数器是否回到零 - 如果是这样,那么所有请求都已完成,您现在可以合并所有数据。比较简单。
另一个选择是利用 Ext.Ajax.requests 对象 - 它包含所有当前尚未完成的请求。只要这些请求开始/结束之间没有其他请求开始,您就可以在回调函数中检查此对象,如果没有请求,那么您可以处理您的数据。
See this link有关 Ext.Ajax 的文档。
关于javascript - Sencha Touch 2、Ajax Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13731390/