【问题标题】:Do async function keep running when route change in Vuejs?Vuejs中路由更改时异步功能是否继续运行?
【发布时间】:2021-07-21 08:23:46
【问题描述】:

我是 vuejs 的新手, 我正在尝试从 Vue View 内部下载一些数据,使用方法内部的函数,我想知道我是否离开了那个视图(更改路线),下载过程还在运行吗? (在这种情况下,我是从 Firestore 下载的,一些巨大的数据库)

关于如何完成的任何建议?让数据库下载不管路由变化都保持运行?

非常感谢任何帮助

编辑: 澄清一下,我的情况是这样的:

  1. 用户打开一些页面
  2. 页面在后台下载一些数据(需要一些时间)
  3. 用户移动到另一个页面

我要问的是如何让数据下载过程继续运行,即使用户移动到另一条路线?

【问题讨论】:

    标签: vue.js vuejs2


    【解决方案1】:

    如果您正在使用 Vue Router 开发 SPA,keep-alive 元素可能会帮助您解决这个问题。

    基本上,根据Vue JS Lifecycle Diagram,一旦一个组件被销毁,Vue实例的所有指令都被解除绑定,所有事件监听器都被移除,所有子Vue实例也被销毁。

    【讨论】:

    • 感谢您的回复,很抱歉我刚刚用我的案例详细信息编辑了我的问题,那么 keep-alive 是否适用于我的案例? Vue 中没有任何东西可以在后台运行吗?
    • 你在使用Vue路由器router-view吗?
    • 是的,我正在使用 Vue 路由器
    • 那么是的,keep-alive 将为您提供帮助。这将缓存router-view 的状态、阅读进度等,因此您不必每次都下载该页面。
    • 再次感谢您的建议,但是如果我不想使用keep-alive,我可以在vuex action中编写下载功能,并从组件中调用它吗?会不会变成后台进程? (当我移动到其他路线时,vuex 动作仍然会运行
    【解决方案2】:

    在我的例子中,我最终将函数放在 vuex 动作中,并使用 this.$store.dispatch(function name) 调用它。它完美无缺。即使我不断更改路线/视图,bg 进程(操作)也会继续运行。

    注意:我不需要将下载的数据绑定/反应,我只需要在后台下载数据并将其保存到 localforage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多