Vue wykonanie funkcji po zapytaniu http

0

Cześć, w apce mam wyszukiwarkę i wpisując jakąś wartość w inputa i zatwierdzając enterem wykuonuję zapytania do 3 backendu (axios), chciałbym, po skończeniu wykonywania tych trzech zapytań, zapisać response w jednej tablicy i następnie wyemitować zmergowaną tablicę do parenta. Nie bardzo wiem jak sie do tego zabrać, póki coś mam w uproszczeniu coś takiego:

 search() {

                axios.get(`/api/cds?jakies,query`, {
                    headers: {
                        Authorization: token
                    }
                })
                    .then(resp => {
                        this.filteredAlbums = resp.data.cds;
                        this.emitFiltered();
                    })
                    .catch(e => console.log(e));

                axios.get(`/api/cds?artist?jakies,query`, {
                    headers: {
                        Authorization: token
                    }
                })
                    .then(resp => {
                        this.filteredArtist = resp.data.cds;
                        this.emitFiltered();
                    })
                    .catch(e => console.log(e));

                axios.get(`/api/user-by-nick?jakies,query`, {
                    headers: {
                        Authorization: token
                    }
                })
                    .then(resp => {
                        this.filteredUsers = resp.data;
                        this.emitFiltered();
                    })
                    .catch(e => console.log(e));

            },

            emitFiltered() {
                this.$emit('filteredData', [this.filteredUsers, this.filteredArtist, this.filteredAlbums])
            }

Wiem, że to nie jest optymalne i dobre rozwiązanie. dlatego pytam, bo wiem, ze da się to zrobić lepiej

EDIT: Chciałbym wywołać funkcję emitFiltered() dopiero wtedy, gdy wykonają się wszystkie trzy zapytania, niezależnie czy któryś z nich zwróci error

1

Poczytaj o Promise.all().

1 użytkowników online, w tym zalogowanych: 0, gości: 1