如何从生成器函数内的回调函数调用redux-saga效果?

时间:2018-08-16 13:25:27

标签: javascript redux-saga

我的情况如下:

function * uploadFile({file}) {
    Papa.parse(file, {
        header: true,
        complete: function(results) {
            console.log(results.data);
            //if errors => call uploadFailed action with yield
            //else yield put(uploadSucceed)
        }
    });
}

注释的代码不是生成器函数,因此无法调用。如果我将*添加到回调定义中,则不会出现错误,但是不会起作用。

我也尝试过将其包装在另一个函数中,该函数接受没有任何运气的回调。经历了1 2之类的几个答案,但是这些不是我的情况。据我所知,关于redux的Papa也没有文档。任何帮助将不胜感激。

顺便说一句:

complete: yield call(someAction) //doesn't work as well.

1 个答案:

答案 0 :(得分:2)

提供解析功能并使用call效果

function parse(file) {
  return new Promise((complete, error) => {
    Papa.parse(file, {complete, error})
  })
}

function * uploadFile({file}) {
    try {
      const result = yield call(parse, file);

      // yield put success action

    } catch(error) {

      // yield put error action
    }

}