我在下面使用了这两个来源:
但在extjs的第6版中没有一个是有效的
每次新操作开始时如何取消加载操作?
答案 0 :(得分:2)
在ExtJS 6.0.2版中,有些内容已经发生变化,Operation
类有abort
方法
没有getOperation方法,但有beforeload
对于获取操作很有用。
通过收集一项或多项操作,您可以在开始新操作之前安全abort
。
以下的Typescript类将有所帮助:
module ext_ts {
interface Abortable {
abort(): void
}
export class AutoAbortPreviousOperation {
private _storeOperations: Array<Abortable> = []
applyOnStore(store): any {
let me = this
return store.on({
destroyable: true,
beforeload: function (theStore, operation, eOpts) {
let lastOperation = me._storeOperations.pop()
if (lastOperation) {
console.log("aborting previous operation safely")
lastOperation.abort() //this abort is safe so no need to check !lastOperation.isComplete()
} else {
//nop
}
me._storeOperations.push(operation) //add this operation for later usage
return true //let the loading begin
}
})
}
}
}
请注意,用户强制取消的请求的statusCode
为: -1
有用的链接:
答案 1 :(得分:0)
我假设商店中的基础代理是基于AJAX的代理。在这种情况下,一个简单的
store.getProxy().abort();
应该做这项工作。