代码之家  ›  专栏  ›  技术社区  ›  toshi

使用Firebase listner时未调用生成器函数

  •  0
  • toshi  · 技术社区  · 7 年前

    我正在使用Firebase和Redux saga,并希望将生成器附加到Firebase的侦听器上,如下所示。

    var ref = firebase.database().ref(`path`)
    ref.on('value',function* (snapshot){
    
        yield put({ type: 'SOME_ACTION' })
    

    当我运行这个程序时,不会调用回调函数。如果我删除*,它将被调用。 是否有任何解决方法?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Martin Kadlec    7 年前

    并非所有生成器都能产生传奇效果。仅在使用 sagaMiddleware.runSaga() 或使用效果,例如 call ,则, fork ,则, spawn

    解决问题的一种方法是使用事件通道,请参阅 https://redux-saga.js.org/docs/advanced/Channels.html#using-the-eventchannel-factory-to-connect-to-external-events