ExtJs的store默认是异步的,但有时候我们必须要发送同步请求才能满足需求,比如在多线程中,要实现同步很简单,只需继承Ext.data.proxy.Ajax,重写的同步类如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Ext.define('Ext.ux.data.proxy.Ajax', { extend: 'Ext.data.proxy.Ajax', async:true, doRequest: function(operation, callback, scope) { var writer = this.getWriter(), request = this.buildRequest(operation); if (operation.allowWrite()) { request = writer.write(request); } Ext.apply(request, { async : this.async, binary : this.binary, headers : this.headers, timeout : this.timeout, scope : this, callback : this.createRequestCallback(request, operation, callback, scope), method : this.getMethod(request), disableCaching: false }); Ext.Ajax.request(request); return request; } }); |
使用的时候,只需修改代理即可,async:false表示同步,true为异步:
1 2 3 4 5 6 7 8 |
proxy: Ext.create("Ext.ux.data.proxy.Ajax",{ async:false, url:" ", reader: { type: 'json', root: 'root' } }) |
from:https://my.oschina.net/wangdaoliang/blog/776567