gpt4 book ai didi

combobox - ExtJs 4 : Remote Combobox - Abort Previous Request

转载 作者:行者123 更新时间:2023-12-03 06:30:08 26 4
gpt4 key购买 nike

如标题所示,我想中止之前的ajax请求。每当用户输入字母(或数字)时,组合框就会通过 ajax 请求数据,就像我通过 ajax 所说的那样,然后将数据返回到组合框。

我的问题是,每当我在字段中输入用户输入时,ajax 请求就会堆积起来。

我想要做的是首先中止先前的请求,然后继续处理当前的请求。我尝试了这段代码:

  comboObj.onTypeAhead = Ext.Function.createInterceptor(comboObj.onTypeAhead, function() {
Ext.Ajax.abort(); //aborts the last Ajax request
return true; //runs the onTypeAhead function
});

这不起作用,然后尝试了这个:

  ......
listeners: {
beforequery: function(evt){
Ext.Ajax.abortAll(); //cancel any previous requests
return true;
}
}

这对我来说也不起作用,因为我有一个也使用 ajax 请求的计时器,如果执行监听器,该计时器也会被取消。

我该怎么做?

最佳答案

我花了很长时间才弄清楚。Ext.Ajax.abort(request) 能够中止请求。但是从存储中获取当前请求对象(或者更好的是 Ext.Ajax.abort 需要的请求对象)是相当困难的。

最后我得到了这个:

...
if (store.loading && store.lastOperation) {
var requests = Ext.Ajax.requests;
for (id in requests)
if (requests.hasOwnProperty(id) && requests[id].options == store.lastOperation.request) {
Ext.Ajax.abort(requests[id]);
}
}
store.on('beforeload', function(store, operation) {
store.lastOperation = operation;
}, this, { single: true });

store.load();
...

不太好,但持久的商店负载被可靠地取消。

关于combobox - ExtJs 4 : Remote Combobox - Abort Previous Request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com