如何在Sencha ExtJS v6中中止/取消商店的加载操作?

时间:2016-08-09 13:12:28

标签: extjs store abort operation cancellation

我在下面使用了这两个来源:

但在extjs的第6版中没有一个是有效的

每次新操作开始时如何取消加载操作?

2 个答案:

答案 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();

应该做这项工作。