无法在 Vuex 中的其他动作中消除动作

Tit*_*lum 8 lodash vue.js vuex vuejs2 vuex-modules

我正在尝试消除动作中的任何内容,它以一种或另一种方式被吞没......

拿这个(伪)代码:

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
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

小智 10

这应该定义工作

import { debounce } from "lodash";

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

  doRealThing({ commit }) {
    // Whatever
  }
}
Run Code Online (Sandbox Code Playgroud)


Tit*_*lum 4

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

debounce(function() {
  console.log("Inside debounced function.");
  dispatch("doRealThing");
}, 1000)();
Run Code Online (Sandbox Code Playgroud)

所以,简而言之,它应该看起来像这样:

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