Параллельные запросы в 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 больших массива?


Ответы (0 шт):