javascript - Sencha Touch 2、Ajax Promise

标签 javascript ajax sencha-touch-2

我正在寻找一个用例中的最佳实践(使用 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/

相关文章:

javascript - jquery 附加和 jquery html 在 IE 7 或 8 中不起作用

android - Phonegap 应用程序不适用于 android 4.0

javascript - 当元素相等时,Array.sort() 会产生意想不到的结果吗?

javascript - 使用从 jQuery AJAX 响应返回的脚本

JavaScript 错误 [对象 HTMLParagraphElement]

ajax - 如何扩展 socket.io?

cordova - 在手机上存储敏感数据有哪些选项?

themes - Sencha Touch 2 标准主题?

javascript - <div> 上的 setTimeout 函数

javascript - 如何将 CSS 属性添加到 iframe 之外的元素?