gpt4 book ai didi

extjs - 销毁窗口后如何处理传入的ajax请求?

转载 作者:行者123 更新时间:2023-12-02 21:56:56 29 4
gpt4 key购买 nike

我创建了一个包含发送 ajax 请求的网格的窗口。现在,在网格完全创建并且 ajax 请求返回之前,我立即再次关闭窗口。

我有两个问题:

  • 窗口被销毁后,窗口中的组件仍然“事件”

Chrome 控制台列出了它们。尽管我的窗口具有 autoDestroy: true ,但窗口关闭后网格面板和存储仍然存在。关闭时,会触发 destroy 事件。文档说,窗口下的所有组件都应该被销毁。

  • 然后我的回调最终返回并执行,但窗口被销毁

问题是,回调尝试重新配置没有附加任何存储的网格。

错误:未捕获类型错误:无法调用 null Table.js:500 的方法“getCount”(/lib/extjs/src/view/Table.js

如果我的窗口被破坏,如何停止处理回调?

最佳答案

使用 mon 注册事件 这样当监听对象被销毁时它们就会被删除。或者您可以:

  • 在 destroy() 方法中手动删除它们
  • 在回调中检查可能不存在的方法或属性以跳过它们

编辑

您还可以做更多事情

  1. 检查网格的 destroy() 方法是否被调用
  2. 通过调用 Ext.Ajax.abortAll() 中止所有请求(窗口关闭前)
  3. 通过调用 Ext.Ajax.abort(request) 仅中止特定请求(窗口关闭前)

我建议使用选项 2,因为它应该是最安全的。

编辑2

要查看所有正在运行的请求,您需要查看 Ext.data.Connection 的私有(private) requests 属性,其中 Ext.Ajax 扩展。 requests 是对象类型,并将包含当前正在运行的每个请求的属性(请求 ID)。

关于extjs - 销毁窗口后如何处理传入的ajax请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17591127/

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