我试图找到一个解决方案,以便中止'从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秒后获得结果。
我们可以在不使用超时属性的情况下避免此错误吗?没有必要为同步请求提供超时属性吗?
请分享您的宝贵意见。
谢谢
答案 0 :(得分:0)
50秒。??你必须用你的软件来传递游戏男孩; p
无论如何,将timeout
设置为较高值会有什么问题?如果您的请求需要很长时间,那么您别无选择,只能等待它......
同步或异步不会更改响应时间或超时的任何内容。但总的来说,特别是在这种情况下,将请求同步化是一个非常糟糕的主意,因为它会冻结你的整个应用程序... ...