Kiedy wykona się metoda asynchroniczna ajax

0

Czy jeśli mam napisaną metodę w javascripcie a w niej metodę asynchroniczną ajax, a potem za metodą ajax, ale w tej samej metodzie javascript odwołuje siędo pobranych danych za pomocą javascripta to zawsze mi się uda pobrać ich tam je wartości?

0
function doSomething(){
     var data;
     fetch(url).then(function(response){
         console.log("Tu mamy odpowiedz z async!");
     });

    // Tu jeszcze nie ma tych danych, bedzie err
   console.log(data.something);
}
0

To jeśli np mam zmienną globalną do której chcę coś wpisać oraz zmienną lokalną data w funkcji:

var globalna;
function doSomething(){
     var data;
fetch(url).then(function(response){
         data = response.pole;
     });
 
    // Tu jeszcze nie ma tych danych, bedzie err
   console.log(data.something);
   globalna = data;
}

To do zmiennej globalnej nic się nie wpisze? Zmienna o nazwie globalna będzie miała wartość null? Więć jeśli bym chciał wpisać wartość do zmiennej globalnej to byłoby to trzeba robić w tym bloku:

fetch(url).then(function(response){
         data = response.pole;
         globalna = data;
     });
0

Tak, ponieważ JavaScript nie czeka, aż Twój asynchroniczny kod się wykona, tylko jedzie dalej.

Jeżeli się nie mylę, to nawet jeżeli wykonanie fetch by trwało 0.0000000000000000001s, to tak czy siak js pójdzie dalej => wykona przypisanie globalna = undefined => wykona cały synchroniczny kod, jaki jest do wykonania => i wróci do then z Twojej funkcji doSomething.

Poniższy materiał - legenda powinien Ci to rozjaśnić:

0

Dzięki

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