В Redux-saga, как получить результат от вызова уступки Promise? - PullRequest
1 голос
/ 28 апреля 2020

У меня проблемы с настройкой Saga для работы с API, который работает с Promises.

const result = yield call(
    () => {
        return this.getDays().then((_result) => {
            console.log('result inside');
            console.log(_result);
        })}
);
console.log('result outside');
console.log(result);

Когда я читаю значение в _result внутри then (), оно печатает правильное значение, но я не может заставить его работать за пределами вызова yield для дальнейшей передачи его в диспетчер действий (yield yield).

Следуя аналогичным вопросам, я попробовал несколько вещей:

Я попытался поместить возврат _result внутри then (), а также Promise.resolve (_result).

Я также попытался вернуть весь вызов yield и поместить переменную снаружи, чтобы назначить его в then (), но, похоже, ничего не работает.

Я впервые работаю с функциями Promises и генераторами, а также с Saga, Redux и React в целом, поэтому я определенно что-то упускаю.

Также console.log () внутри then () печатается после console.log () в конце.

Есть идеи? Спасибо.

1 Ответ

1 голос
/ 28 апреля 2020

call в redux-saga ожидает функцию, которая возвращает Promise.

const result = yield call(
    () => new Promise((resolve) => {
        this.getDays().then((_result) => {
            resolve(_result);
        });
    });
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...