redux saga,带有返回promise的函数的yield不起作用

时间:2020-03-25 19:46:21

标签: redux-saga

我想在项目中使用redux-saga并坚持一分。 这是一个传奇工作者功能,应使用Firebase身份验证服务登录用户。

function* emailSignIn({payload}) {

    try {

        const user = yield auth.signInWithEmailAndPassword(payload.email, payload.password)

        yield put(signInSuccess(user)) //this line does not executed
    } catch (e) {
        debugger
        yield put(signInFail(e))
    }
}

问题是此行之后的代码无法执行 并且控制台中没有错误。我只是不明白发生了什么。

 const user = yield auth.signInWithEmailAndPassword(payload.email, payload.password)

函数 auth.signInWithEmailAndPassword()返回了承诺。收益应该像等待承诺被解决或被拒绝一样等待,但是什么都没有发生。

请给我任何有关此问题的建议。

1 个答案:

答案 0 :(得分:0)

根据docs,您需要使用从call导出的redux-saga/effects函数。

第一个参数是函数的function,另一个是函数的args

import { call, put } from 'redux-saga/effects'

function* emailSignIn({payload}) {
    try {
        const user = yield call(auth.signInWithEmailAndPassword, payload.email, payload.password)
        yield put(signInSuccess(user))
    } catch (e) {
        debugger
        yield put(signInFail(e))
    }
}