在redux

时间:2016-06-21 14:20:00

标签: javascript reactjs redux

我正在为redux创建一个小型中间件。由于我的电子应用程序连接到另一个数据库并更新它的状态(因此我可以在我的主应用程序上看到此应用程序的状态)。这是我的基本代码:

const BLACKLIST = ['redux-form/FOCUS ', 'redux-form/BLUR'];

export remoteMiddleware => store => next => action => {
  const db = MongoClient.connect(process.env.MONGO_URL);
  try {
    if (!BLACKLIST.includes(action.type)) {
      const state = store.getState();
      db.collection('state').update(
        { _id: process.env.APP_ID },
        { $set: { state } }
      )
    }
  } finally {
    db.close();
  }
}

但是,我经常遇到一些问题,因为它并不总是需要立即开火。我宁愿它每隔n次迭代一次,也可能不超过x ms。

有没有办法限制redux中间件,使其每n次触发一次,或者只运行每x个ms?

1 个答案:

答案 0 :(得分:0)

如何简单地

const BLACKLIST = ['redux-form/FOCUS ', 'redux-form/BLUR'];
var lastActionTime = 0;

export remoteMiddleware => store => next => action => {
  let now = Date.now();
  try {
    if (!BLACKLIST.includes(action.type) && now - lastActionTime > 100)
    ...
  } finally() {
    lastActionTime = now;
    db.close();
  }
}