如何将值从一个redux-sagas生成器传递到另一个

时间:2017-07-24 01:17:28

标签: javascript generator redux-saga

我希望apiCall中的值可以在storedApiCall函数中捕获,然后将该值传递给loginHandle生成器。所以问题是json等于undefined

function* storedApiCall(name,route,kwargs){
    try {
        const response = yield call(apiCall, route, kwargs);
    } catch(e) {
        console.log('exception: ' + e.message);
        console.log(e);
    }
}

所以我希望json的值与response

的值相同
function * loginHandle(action) {

     const json =  yield call(storedApiCall,'name', '/api/auth/login', {username, password});
     console.log('result is');
     console.log(json)
}

2 个答案:

答案 0 :(得分:0)

是的,Vladislav lhost说的是真的,json返回undefined因为storeApiCall没有返回任何内容。

function* storedApiCall(name,route,kwargs){
    try {
        const response = yield call(apiCall, route, kwargs);
        return response;

    } catch(e) {
        return e.message;
        console.log('exception: ' + e.message);
        console.log(e);
    }
}

现在它可能在json上有所作为。

答案 1 :(得分:0)

设法通过使用渠道

来实现目标
export default function * rootSaga() {
    chan = yield call(channel,buffers.expanding(10))

在根传奇中定义了频道并将其声明在文件的顶部

传递函数

yield put.resolve(chan,response);

接收功能

yield call(passingFunction)
const response = yield take(chan)