La maggior parte delle altre risposte sta rispondendo come comportarsi in questo modo. Mi piacerebbe guardare, molto brevemente, a perché asincrono è buono in questo caso.
In effetti, più nel browser Javascript è asincrono. Prendi, ad esempio, questo codice:
document.getElementById('foo').onclick = function() {
alert('foo clicked');
};
document.getElementById('bar').onclick = function() {
alert('bar clicked');
};
Quale sarà il primo? Non lo sai, a causa dell'asincronicità inerente al modello del browser (o di fatto alla maggior parte dei codici basati sugli eventi). Esegui il codice quando si verifica un evento. Si imposta il documento, quindi si attende che l'evento si verifichi e il codice può essere eseguito in tutti i tipi di ordini diversi, a seconda di quali eventi si verificano per primi. Il codice Javascript deve essere eseguito durante l'intero ciclo di vita della pagina, non solo quando viene creato per la prima volta.
Quindi in generale La programmazione Javascript (o almeno la programmazione Javascript oltre il livello più semplice) è spesso asincrona. Inoltre, è molto sensato che le richieste HTTP siano asincrone.
In primo luogo, come si implica nella sua interrogazione, rendendo il codice sincrono potrebbe bloccare l'esecuzione. Vale a dire, probabilmente non vuoi fare un'animazione aspettare due secondi per iniziare perché stai facendo una richiesta HTTP due righe più in alto. I tempi di risposta del server possono essere (a) irregolari e (b) lenti, quindi non ha senso che il design dell'applicazione dipenda dalla velocità della risposta del server.
In secondo luogo, e cosa ancora più importante, l'utente non ha intenzione di smettere di usare il pagina perché lo script sta facendo una chiamata AJAX. Il tuo utente non si cura. Il tuo manuale sarà probabilmente la cura che il vostro normale onscroll
comportamento non funziona perché lo script è attualmente legato con una richiesta AJAX non correlato. Per legare alla natura asincrona dell'intera programmazione Javascript del browser, la stragrande maggioranza delle chiamate HTTP dovrebbe essere non bloccante, asincrona.
Il primo 'A' in' AJAX' sta per asincrono. – Gareth
È possibile impostare l'opzione 'async: true'. Le richieste sincrone possono bloccare temporaneamente il browser, disabilitando tutte le azioni mentre la richiesta è attiva. Non consigliato. – jasssonpet
@Gareth Ero consapevole del fatto che A fosse acronimo asincrono, tuttavia ho sempre pensato che questo si riferisse al fatto che la richiesta è stata fatta senza "ricaricare" la pagina, cioè facendo di nuovo la richiesta http "genitore", quindi la pagina è quindi 'non sincronizzato' con la richiesta http originale che ha consegnato la pagina. – rgvcorley