Процесс асинхронной функции JavaScript - PullRequest
0 голосов
/ 03 мая 2019

fetchAssets () - это асинхронная функция JavaScript. Может кто-нибудь объяснить мне, как работает код ниже?

var x = 5;
this.fetchAssets()
.then(() => {navigate('Auth');})
.catch(error => console.error(`Error while loading: ${error.stack}`));
var y = 6;

Это работает так:

1: выполняется var x = 5. Когда это заканчивается, # 2 начинает

2: fetchAssets () называется

3: выполняется var y = 6

4: всякий раз, когда fetchAssets возвращается, мы переходим к 'Auth'.

ИЛИ мы ждем завершения fetchAssets () перед выполнением var y = 6?

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

Не совсем.Вот более точная версия:

  1. var x = 5 выполнено
  2. fetchAssets() называется
  3. .then() вызывается при возвращаемом значении fetchAssets
  4. .catch() вызывается для возвращаемого значения .then
  5. var y = 6 выполняется
  6. Всякий раз, когда обещание, возвращенное fetchAssets, разрешается, navigate() называется

Особенно эта часть либо неверна, либо просто не очень хорошо выражена:

Всякий раз, когда fetchAssets возвращается, мы переходим к 'Auth'.

fetchAssets возвращается непосредственно перед назначением y.Функции всегда возвращаются синхронно.

1 голос
/ 03 мая 2019

Ваше предположение полностью верно. Вы можете просто проверить свои предположения, добавив несколько console.log s и увидев порядок, в котором они регистрируются.

...