Обещание: асинхронный поток в узле js - PullRequest
0 голосов
/ 26 июня 2018

Привет, я новичок в асинхронном программировании.Я не могу понять, если обещание разрешается успешно, код все еще будет асинхронным.Например: модуль A имеет функцию A (), которая возвращает обещание.Мне требуется модуль A в модуле B и вызов функции A () Код в модуле B будет выглядеть следующим образом:

Section X: some code in module B
Section Y: ModuleA.functionA().then((result) => {
           somevariableInModuleB = result; 
            // assign the result from A() to some variable in module B.
           // some more logic goes here....
        });
Section Z: some more code in module B....

Итак, выполняется ли этот код синхронно, то есть сначала секция X, затем Y, а затем Z?или я должен изменить это как:

Section X: some code in module B
Section Y: ModuleA.functionA().then((result) => {somevariableInModuleB = result;})
Section Z: .then(() => {some more code in module B....});

Это гарантирует, что?

1 Ответ

0 голосов
/ 26 июня 2018

Только код внутри then() будет выполняться синхронно.

В вашем верхнем примере раздел Z может быть выполнен перед кодом внутри обещания в разделе B.

В вашем нижнем примере then() не прикреплен к обещанию и поэтомуне будет работать.

Чтобы сделать его синхронным, вы хотите изменить его так:

Section X: some code in module B
Section Y: ModuleA.functionA().then((result) => {
  somevariableInModuleB = result;
  some more code in module B....
})

Все, что вы хотите сделать с result, должно происходить внутри .then().

...