[Vuejs]-Join 3 res.data vue.js

0👍

This is the best solution but it will only work if clientService.retrieveAllCarsIn , clientService.retrieveAllPositionOcp and clientService.retrieveAllPositions are promises

refreshCourses() {
  Promise.all([clientService.retrieveAllCarsIn(this.INSTRUCTOR) ,  clientService.retrieveAllPositionOcp(this.INSTRUCTOR)] , clientService.retrieveAllPositions(this.INSTRUCTOR)).then((response) =>{
    this.carsIn= response[0].data;
    this.PositionUsed= response[1].data;
    this.positions =  response[2].data;
  }).catch((err) =>{
    //error handler
  }).finally(() =>{
    
  })
}

0👍

Seems like the you can rewrite your function something like this:

refreshCourses() {
    // Get data for all 3 requests at the same time
    const [courses, pos, positions] = Promise.all([clientService.retrieveAllCarsIn(this.INSTRUCTOR), clientService.retrieveAllPositionOcp(this.INSTRUCTOR), clientService.retrieveAllPositions(this.INSTRUCTOR)]);
    // Now iterate over courses
    this.mergedd = courses.map(({
        id,
        namecourse,
        desc,
        plate
    }) => {
        // Get date from pos array
        const {
            date,
            id_position
        } = pos.find(p => p.id_car === plate); // Or p.id_course === id
        // Get nameposition from positions array
        const {
            nameposition
        } = positions.find(p => p.id === id_position);
        const out = {
            id,
            namecourse,
            desc,
            date,
            nameposition
        }
    });
}

Leave a comment