Прежде всего, поблагодарите меня за чтение моего вопроса и попробуйте помочь мне и извиниться за мой английский.
Я использую redux и redux-thunk, и я хотел бы запустить несколько рассылок на redux.Чтобы быть более точным, я хотел бы запустить рассылку после того, как предыдущая закончится.
Моя проблема в том, что я не знаю, как сделать это без выборки.
Например: запуск отправки 1 -> заканчиваетсяdispatch1 -> запуск dispatch2
Вот мой код:
static moveLayer(layerSelected, direction) {
const mapLayers = [... AxisStore.getStore().getState().map.mapGLlayers];
const ids = mapLayers.map(l => l.id);
const index = ids.indexOf(layerSelected.id);
let newIndex = direction === 'down' ? index - 1 : index + 1;
let layerUpdated = Object.assign({}, mapLayers[index], {
redraw: false
});
let oldPositionLayer = Object.assign({}, mapLayers[newIndex], {
redraw: false
});
if (direction === 'down') {
mapLayers.splice(newIndex, 2, layerUpdated, oldPositionLayer);
} else {
mapLayers.splice(index, 2, oldPositionLayer, layerUpdated);
}
return (dispatch) => {
dispatch({
type: MapTypeConstants.SET_MAP_LAYERS,
payload: mapLayers
});
};
}
static updateBefore(layer) {
let mapLayers = [... AxisStore.getStore().getState().map.mapGLlayers];
const ids = mapLayers.map(l => l.id);
const posInRedux = ids.indexOf(layer.id);
let nextVisibleLayer = mapLayers.find((layerObj, idx) => idx > posInRedux && layerObj.layout && layerObj.layout.visibility && layerObj.layout.visibility === 'visible');
mapLayers[posInRedux].before = (nextVisibleLayer) ? String(nextVisibleLayer.id) : undefined;
mapLayers[posInRedux].redraw = (mapLayers[posInRedux].layout.visibility === 'visible') ? true : false;
return (dispatch) => {
dispatch({
type: MapTypeConstants.SET_MAP_LAYERS,
payload: mapLayers
});
};
}