вызов yield возвращает неопределенное, а не разрешенное значение обещания - PullRequest
0 голосов
/ 07 января 2019

Я новичок в Redux-Saga. Ниже приведен код моего вызова API-

const registerUserRequest = (email, password, confirm_password, country_code, phone_number) =>
{
fetch(URLs.baseUrl + URLs.signUpUrl(email, password, confirm_password, country_code, phone_number), {
    method: 'POST',
    headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
        'Cache-Control': 'no-cache, no-store, must-revalidate',
        'Pragma': 'no-cache',
        'Expires': 0
    },
})
}

function* registerUserToService(action)
{
try{
    const response = yield call(registerUserRequest, action.email, action.password, action.confirm_password, action.country_code, action.phone_number);
    const result = yield response.json();   
    if(result.error)
    {
        yield put({ type: REGISTER_USER_ERROR, error: result.error})
    }
    else
    {
        yield put({ type: REGISTER_USER_RESULT, result});
    } 
}
catch(e)
{
    console.log('registerUserException', e.message);
    yield put({ type: REGISTER_USER_ERROR, error: e.message})
}
};

Но я получаю ответ как неопределенное, а не как разрешенное значение обещания, а выборка результата из ответа генерирует исключение - Невозможно прочитать значение json из неопределенного. Буду признателен за любую помощь, чтобы понять это.

1 Ответ

0 голосов
/ 07 января 2019

Вы ничего не возвращаете в своей функции registerUserRequest. Если вы хотите получить обещание, верните fetch

const registerUserRequest = (email, password, confirm_password, country_code, phone_number) =>
{
return fetch(URLs.baseUrl + URLs.signUpUrl(email, password, confirm_password, country_code, phone_number), {
    method: 'POST',
    headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
        'Cache-Control': 'no-cache, no-store, must-revalidate',
        'Pragma': 'no-cache',
        'Expires': 0
    },
})
}
...