Сделайте отдельный метод типа fetchData(). Вызывайте его в mounted.
fetchData() {
this.dataRequest.then(response => {
this.filter() // для планировок экшен
this.setMarkers(this.residentials)
this.map.on("zoomstart", this.onZoomStart);
this.map.on("zoomend", this.onZoomEnd);
})
.catch(error => {
this.fetchData();
});
}
Но по-хорошему бы:
1. Разбить это на большее число методов, выделив работу с картой в отдельный метод от получения данных
2. fetchData в catch запускать через timeout
3. В catch надо бы определять, что проблема именно сети, а не другая: ни ошибка с сервера, ни какая-то на клиентской стороне. Не знаю, чем и как вы шлёте запросы, по этому не могу сразу код предложить.
На ES по-старше будет чуть красивее:
mounted() {
this.markers = DG.featureGroup();
this.popups = DG.featureGroup();
this.map = DG.map("map", {
center: [54.98, 82.89],
zoom: 9,
minZoom: 7,
zoomControl: false,
fullscreenControl: false
});
await fetchData();
this.setMapMarkets();
},
methods: {
setMapMarkers() {
this.filter() // для планировок экшен
this.setMarkers(this.residentials)
this.map.on("zoomstart", this.onZoomStart);
this.map.on("zoomend", this.onZoomEnd);
},
async fetchData() {
try {
const response = await this.dataRequest();
// как-то надо использовать response, но у вас нет использования
} catch (e) {
// if ошибка сети
await this.fetchData()
}
}
}