2015-07-21 15 views
13

Nasıl/Nerede periyodik olarak eylemler gönderebilirim? Geri sayım yapmak için tekrarlı setTimeout'u kullanın. RedO'da setTimeout ve dispatcher kullanarak periyodik eylemler nasıl tetiklenir

, örnekten buna benzer bir şey Taken:
// Can also be async if you return a function 
export function incrementAsync() { 
    return dispatch => { 
    (function _r() { 
     setTimeout(() => { 
     // Yay! Can invoke sync or async actions with `dispatch` 
     dispatch(increment()); 
     _r(); 
     }, 1000); 
    })(); 
    }; 
} 

Yani bu iyi bir fikir ya da daha iyi bir yaklaşım ara katman kullanarak veya başka bir yerden eylemleri oluşturma gibi, bu soruna yoktur

?

Genel bir sürümünü tercih ediyorum, burada zamanlayıcıyı mağazadan başlatmayı/durdurmayı kontrol edebiliyorum.

Ben her ne kadar biraz kıvrık, örnek bir uygulama https://gist.github.com/eguneys/7023a114558b92fdd25e

+0

Bu işe yaradığı için, muhtemelen her zaman aynı görünen ancak bir kez tanımlayan bir işlevi yeniden oluşturmaya devam etmem. –

+0

setInterval'ı denediniz mi? Artışınız hakkında async'ın ne olduğunu anlamıyorum. Js olayının çok hassas olmadığını unutmayın – softwarenewbie7331

cevap

14

sen gayet önermek yaklaşım bakmak lütfen kurulum ettik. Genel olarak, bileşen yaşam döngüsü yöntemlerinin aralıklarını (ör. componentDidMount/componentWillUnmount) belirledim ve diğer eylemlerdeki aralıkların ayarlanmasını engellerdim.

Bu esnekliğe kesinlikle gereksiniminiz varsa, async yönetimi için Rx ve dispatch gözlemlenebilir zincirinin en sonundaki eylemleri kullanmak daha iyi bir yoldur. Bu şekilde, Redux'u (eşzamanlı güncellemeler) parladığı ve asenkron bileşimi Rx'e bıraktığı şekilde kullanırsınız.

İlgili konular