通过使用redux-saga异步调用redux存储

问题描述 投票:0回答:1

我有一个带有“提供者”的列表,我必须异步地从中获取数据。我使用redux-saga。

Function requestProvider返回承诺并为每个提供者获取数据。

我使用“全部产生”来运行多个异步请求。

比我需要将每个提供程序的结果推送到redux存储。我尝试使用“全部产生”来注册“投入”。但是这一行被忽略了。我不确定我做对了。

如何调用redux操作以将数据发送到redux存储?

. . .

// Providers api
const providers = [ '/apiProvider1', '/apiProvider2', '/apiProvider3' ];

// Fetching data from each provider
const providerResults: [] = 
    yield all(providers.map(provider => call(requestProvider, provider)));

// Trying to push the results to redux-stor, but this line is ignored, nothing happened here
yield all ([
    providerResults.map(
        result => put({ type: constants.MAP_PUSH_PROVIDER_RESULTS, providerResults: result }))
])

. . .

export const requestProvider = (provider: Provider, coverageLocation: CoverageLocation): Promise<boolean> => {
// console.log('promise:::', provider);
return new Promise((resolve, reject) => {
 . . .
}
asynchronous redux redux-saga saga
1个回答
0
投票

providerResults.map返回一个数组,然后将其包装在另一个数组中。我认为您只需要删除该附加数组即可。

yield all ( // <-- removed square bracket on this line
  providerResults.map
    result => put({ type: constants.MAP_PUSH_PROVIDER_RESULTS, providerResults: result }))
) // <-- and on this line
© www.soinside.com 2019 - 2024. All rights reserved.