В Redux Toolkit и redux-thunk также можно выполнять несколько асинхронных операций параллельно, используя функцию `Promise.all`. Вот пример:
```javascript
import { createSlice } from '@reduxjs/toolkit';
import { fetch1, fetch2, fetch3 } from './api';
const initialState = {
isLoading: false,
};
const mySlice = createSlice({
name: 'myData',
initialState,
reducers: {
setLoading: (state, action) => {
state.isLoading = action.payload;
},
},
});
export const { setLoading } = mySlice.actions;
export const fetchData = () => async (dispatch) => {
try {
dispatch(setLoading(true));
const [data1, data2, data3] = await Promise.all([
fetch1(),
fetch2(),
fetch3(),
]);
// Обработка полученных данных...
dispatch(setLoading(false));
} catch (error) {
// Обработка ошибки...
dispatch(setLoading(false));
}
};
export default mySlice.reducer;
```
Этот пример показывает, как можно выполнить три асинхронных вызова `(fetch1, fetch2, fetch3)` параллельно с помощью `Promise.all`. Значение `isLoading` в вашем состоянии Redux будет установлено в `true` перед началом выполнения операций и в `false` после их завершения или возникновения ошибки.
Вызов `fetchData` запустит все три асинхронных операции параллельно и дождется их завершения перед обработкой полученных данных. Это позволит увеличить производительность, особенно если операции выполняются независимо друг от друга.