在 Redux-saga 中,如何从对 Promise 的 yield 调用中获取结果?
In Redux-saga, how to get a result from a yield call to a Promise?
我在使用 Promises 的 API 使 Saga 工作时遇到问题。
const result = yield call(
() => {
return this.getDays().then((_result) => {
console.log('result inside');
console.log(_result);
})}
);
console.log('result outside');
console.log(result);
当我在 then() 中读取 _result 的值时,它会打印出正确的值,但我似乎无法让它在 yield 调用之外工作以进一步将其传递给动作调度(yield put ).
在类似问题的引导下,我尝试了很多东西:
我试过在 then() 中放入一个 return 的 _result,以及一个 Promise.resolve(_result)。
我也试过 return 整个 yield 调用并在外面放一个变量以在 then() 中分配它,但似乎没有任何效果。
这是我第一次使用 Promises 和生成器函数以及 Saga 和 Redux 以及一般的 React,所以我肯定遗漏了一些东西。
另外 then() 里面的 console.log() 打印在最后的 console.log() 之后。
有什么想法吗?谢谢。
redux-saga 中的 call
需要一个 returns Promise 的函数。
const result = yield call(
() => new Promise((resolve) => {
this.getDays().then((_result) => {
resolve(_result);
});
});
);
我在使用 Promises 的 API 使 Saga 工作时遇到问题。
const result = yield call(
() => {
return this.getDays().then((_result) => {
console.log('result inside');
console.log(_result);
})}
);
console.log('result outside');
console.log(result);
当我在 then() 中读取 _result 的值时,它会打印出正确的值,但我似乎无法让它在 yield 调用之外工作以进一步将其传递给动作调度(yield put ).
在类似问题的引导下,我尝试了很多东西:
我试过在 then() 中放入一个 return 的 _result,以及一个 Promise.resolve(_result)。
我也试过 return 整个 yield 调用并在外面放一个变量以在 then() 中分配它,但似乎没有任何效果。
这是我第一次使用 Promises 和生成器函数以及 Saga 和 Redux 以及一般的 React,所以我肯定遗漏了一些东西。
另外 then() 里面的 console.log() 打印在最后的 console.log() 之后。
有什么想法吗?谢谢。
call
需要一个 returns Promise 的函数。
const result = yield call(
() => new Promise((resolve) => {
this.getDays().then((_result) => {
resolve(_result);
});
});
);