dso*_*len 2 javascript promise redux-saga
在一个redux传奇中,我向不同的系统发送了六次获取请求。我要等所有这些请求返回后,再对结果进行最后的处理。
为此,我有一个数组promises,代表每个查询。我可以调用Promise.all()该数组,但这将导致传奇挂起,从而所有事件挂起,直到promise返回。
我尝试创建一个async promisethat promise.all,然后redux-effects在该promise上使用Call,但是这也挂了。
async在等待诺言归来时,我如何保持我传奇的本性?
要并行运行所有请求,您应该使用中的all效果redux-saga。它类似于Promise.all您已经引用的方法。
例:
import { fetchCustomers, fetchProducts } from './path/to/api'
import { all, call } from `redux-saga/effects`
function* mySaga() {
const { customers, products } = yield all({
customers: call(fetchCustomers),
products: call(fetchProducts)
});
// do something with results
}
Run Code Online (Sandbox Code Playgroud)
这是并行运行异步操作并等待所有进程完成的最直接的方法。这种方法不会阻止javascript事件循环。它只会阻止生成器功能的其余部分运行。在请求进行期间,您的应用程序仍会收到其他Sagas中的其他操作以及其他事件(例如点击)。
请参考官方文档以获取更多信息。
| 归档时间: |
|
| 查看次数: |
1130 次 |
| 最近记录: |