Come gestire più chiamate API utilizzando javascript / jquery

0

Ho bisogno di creare un servizio che chiamerà più API contemporaneamente e quindi di inviare i risultati sulla pagina (pensa a come funziona un sito di confronto prezzi, ad esempio).

L'idea è che al termine di ogni chiamata API i risultati vengono inviati immediatamente al browser e la pagina diventa progressivamente più grande fino al completamento di tutti i processi.

Poiché queste chiamate API possono richiedere diversi secondi ciascuna per tornare vorrei farlo tramite javascript / jquery per creare un'esperienza utente migliore. Non ho mai fatto nulla del genere prima di usare javascript / jquery, quindi mi chiedevo se esistessero strutture / consigli che qualcuno sarebbe disposto a condividere.

    
posta James Privett 04.06.2014 - 16:06
fonte

1 risposta

0

Questo dovrebbe essere abbastanza facile, considerando questo è il modo in cui le richieste HTTP JavaScript funzionano di default!

A meno che tu non specifichi espressamente XMLHttpRequest (o jQuery $.ajax o uno dei suoi wrapper) per essere sincrono, verrà eseguito in modalità asincrona. Ciò significa che gli dai una funzione di callback, invia la richiesta e quindi continua nel codice. Solo quando la risposta restituisce la richiamata viene invocata con esso - ciò può accadere molto tempo dopo che l'evento JavaScript che ha inviato la richiesta è terminato.

Quindi, quello che devi semplicemente fare è (mostrato in jQuery per semplicità, ma il concetto di JS puro è lo stesso):

$.ajax({
        type: 'POST',//or 'GET'
        url: 'first_api_url',
        data: {/*first_api_data*/}
}).done(function(data){
        //Data contains the results from the first API.
        //Use them to update the DOM.
});

$.ajax({
        type: 'POST',//or 'GET'
        url: 'second_api_url',
        data: {/*second_api_data*/}
}).done(function(data){
        //Data contains the results from the second API
        //Use them to update the DOM.
});

P.S. - Non dovresti contare sulla seconda chiamata inviata prima che la risposta della prima chiamata ritorni. Se la risposta della prima chiamata ritorna veramente veloce, potrebbe interrompersi nel mezzo. Probabilmente dipende dall'implementazione di JavaScript, e probabilmente non succederà in questo particolare codice quando la seconda chiamata è immediatamente successiva alla prima, ma ho riscontrato un brutto bug in cui le chiamate AJAX ritornano troppo velocemente e usano le cose prima che siano inizializzato.

    
risposta data 05.06.2014 - 01:04
fonte

Leggi altre domande sui tag