Вы не обрабатываете обещания должным образом, поэтому они продолжают получать неразрешенные .Вы можете использовать async
, await
, хотя я предпочитаю использовать простые Обещающие объекты :
getDetails()
- это другая история.Вы делаете цикл, и forEach
цикл вы отправляете запрос axios .Вам может потребоваться сохранить каждый Promise , возвращаемый каждым axios вызовом, в массиве, чтобы затем вызывать Promise.all .
getDetails: function() {
let url = '/pacientes/request-json/agenda/validarAsistencia/eventos/';
console.log('loading');
let promisedEvents = [];
this.events.forEach(event => {
promisedEvents.push(axios.get(url + event.id))
});
return Promise.all(promisedEvents)
},
После этого я бы сделал что-то вроде этого:
loadData: function() {
axios.get('/pacientes/request-json/agenda/validarAsistencia/eventos')
.then(res => {
this.events = res.data;
this.getDelayColor() // sync operation; no need to be returned
return this.getDetails(); // Return the promise(s)
})
.then((res) => {
// do something with the response from your array of Promises
})
.then(anotherPromise) // You can also return a promise like this
.catch(handleError) // Very important to handle your error!!
});
},
Я не говорю, что это лучший способ достичь того, чего вы можете хотеть, но это один из способов заставить ваш код работать.Важно то, что вам нужно узнать об обещаниях.