【问题标题】:Can not debounce action within other action in Vuex无法在 Vuex 中的其他操作中反跳操作
【发布时间】:2019-05-27 09:12:17
【问题描述】:

我正在尝试消除 Action 中的任何内容,但它会以某种方式被吞没......

获取这个(伪)代码:

import { debounce } from "lodash";

const actions = {
  debounceSomeLogging ({ dispatch }, text) {
    console.log("Outside debounced function.");
    debounce(function() {
      console.log("Inside debounced function.");
      dispatch("doRealThing");
    }, 1000);
  },

  doRealThing({ commit }) {
    // Whatever
  }
}

当我调用操作时,我看到了Outside debounced function,但我看不到其他日志记录,并且其他操作没有被触发。

任何人都有这方面的经验,可以指出正确的方向吗?

【问题讨论】:

  • debounce 不会运行您的函数,而是创建一个新函数,当调用该函数时会延迟调用您的内部函数。所以你需要分配去抖动的返回值并从某个地方调用它......
  • 好的,这似乎是问题所在。非常感谢,我会添加它作为答案。

标签: vue.js vuejs2 lodash vuex vuex-modules


【解决方案1】:

这应该定义工作

import { debounce } from "lodash";

const actions = {
  debounceSomeLogging: debounce(({ dispatch }, text) => {
    console.log("Inside debounced function.");
    dispatch("doRealThing");
  }, 1000),

  doRealThing({ commit }) {
    // Whatever
  }
}

【讨论】:

    【解决方案2】:

    正如nemesv 在评论中指出的那样,debounce 函数不会调用内部函数。所以你需要再次调用 debounce,像这样:

    debounce(function() {
      console.log("Inside debounced function.");
      dispatch("doRealThing");
    }, 1000)();
    

    所以,简而言之,它应该是这样的:

    debounce(...)() 而不是这样的debounce(...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 2022-01-23
      • 2016-06-11
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      相关资源
      最近更新 更多