Параллельные запросы в rtk query
У меня есть файл, где я делаю несколько запросов в одном queryFn запросе.
import { FetchBaseQueryError, createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
//trades?symbol=BTCUSDT&interval=3m btcusdt@trade
export interface ICoin{
symbol:string,
status:string,
pair:string,
type: undefined | string
}
//query:()=>`/fapi.binance.com/fapi/v1/exchangeInfo`,
export interface ICoinQuery{
symbols:ICoin[]
}
export const CoinApi=createApi({
reducerPath: 'coinApi',
baseQuery: fetchBaseQuery({baseUrl:'https:'}),
endpoints: (build)=>({
getCoin: build.query<ICoin[],void>({
async queryFn(_arg, _queryApi, _extraOptions, fetchWithBQ) {
const usdMResponse = await fetchWithBQ('/fapi.binance.com/fapi/v1/exchangeInfo')
const usdM = usdMResponse.data as ICoinQuery
for(let symbol of usdM.symbols){
symbol.type='futures'
}
const coinMResponse = await fetchWithBQ(`/dapi.binance.com/dapi/v1/exchangeInfo`)
const coinM:ICoinQuery=coinMResponse.data as ICoinQuery
for(let symbol of coinM.symbols){
symbol.type='futures'
}
const coinSpotResponse = await fetchWithBQ(`/api.binance.com/api/v1/exchangeInfo`)
const coinSpot:ICoinQuery=coinSpotResponse.data as ICoinQuery
for(let symbol of coinSpot.symbols){
symbol.type='spot'
}
const allCoins=coinM.symbols.concat(usdM.symbols).concat(coinSpot.symbols)
return allCoins
? { data: allCoins as ICoin[] }
: { error: coinSpotResponse.error as FetchBaseQueryError }
},
}),
})
})
export const {useGetCoinQuery}=CoinApi
Проблема заключается в том, что запрос происходит очень долго. Как я могу решить эту проблему, может с помощью Promise.all? Если с помощью Promise.all, то напишите, пожалуйста, как и куда вставить. Или же возможно из-за того, что я соединяю 3 больших массива?