0

在从 Ext-js-4 调用服务调用时,我正在尝试解决“中止”错误。我将异步属性设置为“假”,据我了解,这将使请求成为同步请求。以下是我的商店代码,它有代理定义。

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 秒后获得结果。

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

请分享您对此的宝贵意见。

谢谢

4

1 回答 1

0

50秒??你必须用你的软弱来交付游戏男孩;p

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

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

于 2013-06-04T15:07:46.180 回答