2016-06-21 49 views
0

我正在为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毫秒。

是否有一种方法可以限制redux中间件,使其每隔n次都会触发一次,或者它只会每x次运行一次?

+0

没有在官方文档延迟中间件的一个例子。应该很容易修改它以满足您的需求。 http://redux.js.org/docs/advanced/Middleware.html – Lee

+0

@corvid下面的答案是否有效?如果不是,你在找什么?这很简单,但似乎只需要这些。 –

回答

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(); 
    } 
} 
相关问题