2016-05-30 23 views
7
function fun(){ 
    console.log("Hi"); 
    window.location.href="http://www.google.com"; 
    console.log("Hello, how are you"); 
    alert("I am good"); 
    fun1(); 
} 

function fun1(){ 
console.log("Whats up??"); 
} 

Se vedete le righe precedenti di codice del location.href è sempre chiamato prima console.log ("Ciao, come stai"), allerta e fun1().La chiamata location.href JavaScript è asincrona?

quando chiamo il fun() esegue tutte le istruzioni sotto location.href e quindi reindirizza a https://www.google.com.

Quindi la mia domanda è "La chiamata location.href è di natura asincrona, se non poi quello che sta succedendo qui" ??

Perché ho pensato che nel momento in cui reindirizzerà l'utente ad un'altra pagina, le righe di codice al di sotto di esso non verranno mai eseguite.

Qualsiasi aiuto/spiegazione è apprezzato !!!

Grazie

risposta

3

un browser eseguirà codice dopo window.location.href = 'http://google.com finché il browser passa al successivo indirizzo web. Pertanto, il numero di righe che verranno eseguite dipende da una combinazione della velocità del browser o dall'ingresso sincrono successivo dell'utente (uno alert nel tuo caso).

+0

ma nel mio caso sta eseguendo tutta la riga di codice prima di reindirizzarlo effettivamente a google.com – shreyansh

+0

Quindi, cosa dovrei capire dal tuo commento ?? è sincrono o asincrono ?? – shreyansh

+0

@shreyansh È asincrono nei termini più ampi, il mio commento si riferisce a quanto può essere completato prima della transizione .. –

Problemi correlati