Extjs-4 Ajax请求同步调用出现中止错误

时间:2013-06-04 14:58:19

标签: extjs

我试图找到一个解决方案,以便中止'从Ext-js-4调用服务调用时出错。 我将异步attirbute设为' false',根据我的理解,这将使请求成为同步请求。以下是我的商店代码,它有代理定义。

Ext.define('RD.store.Rules', {
       extend: 'Ext.data.Store',
       requires: 'RD.model.Rules',
       model: 'RD.model.Rules',

       proxy: {
              type: 'ajax',
              async : false,
              url: '/admin/client/test/list.in',
              actionMethods: {
                     create: 'POST',
                     read: 'GET',
                     update: 'POST',
                     destroy: 'POST'
              },
              reader: {
                     type: 'json',
                     root: 'rules'
              }
       },

       autoLoad: false,
       autoSync: false,

       // Event listeners
       listeners: {
              'beforeload': function(self, operation) {
                     console.log('RD.store.Rules beforeload');
                     console.log(self, operation);

                     self.total = null;
                     self.returned = null;
              },
              'load': function(self, records, successful) {
                     console.log('RD.store.Rules load');
                     console.log(self, records, successful);

                     var data = self.getProxy().getReader().rawData;
                     self.total = data.total;
                     self.returned = data.returned;
              }
       }
});

如果我使用此代理调用请求,我将会中止' 27秒后出错。 出于测试目的,我将超时属性添加到代理,如下所示

       proxy: {
              type: 'ajax',
              async : false,
              **timeout: 300000,** 
              url: '/admin/client/test/list.in',

在此更改后,我可以在40到50秒后获得结果。

我们可以在不使用超时属性的情况下避免此错误吗?没有必要为同步请求提供超时属性吗?

请分享您的宝贵意见。

谢谢

1 个答案:

答案 0 :(得分:0)

50秒。??你必须用你的软件来传递游戏男孩; p

无论如何,将timeout设置为较高值会有什么问题?如果您的请求需要很长时间,那么您别无选择,只能等待它......

同步或异步不会更改响应时间或超时的任何内容。但总的来说,特别是在这种情况下,将请求同步化是一个非常糟糕的主意,因为它会冻结你的整个应用程序... ...