объем обещаний с использованием await и async - PullRequest
0 голосов
/ 23 ноября 2018
      var accountA;
       var  accountB;
      accounts = async () => {
        accountA = await server.loadAccount(Apub)

        console.log(accountA)
        accountB = await (server.loadAccount(Bpub))
    }

  accounts()

  console.log(accountA);

1) Apub - это мой открытый ключ, который я уже объявил

2), когда я печатаю учетную запись

A

внутри функции он показывает мне полную информацию из учетной записи A

3) когда я делаю console.log вне функции, вывод будет

undefined

4) я объявил переменные вне функции как глобальную область видимости

пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Ваша accounts функция является асинхронной.Поэтому console.log () в последней строке вызывается первым, прежде чем учетные записи успеют завершиться.Вот почему он отображает неопределенный.Вы должны дождаться окончания accounts, прежде чем печатать его, добавив «ожидание» перед вашим вызовом.

var accountA;
var  accountB;
accounts = async () => {
    accountA = await server.loadAccount(Apub)

    console.log(accountA)
    accountB = await (server.loadAccount(Bpub))
}

await accounts()

console.log(accountA);
0 голосов
/ 23 ноября 2018

Несмотря на то, что вы используете await внутри функции, вы не ждете до тех пор, пока вы не получите ответ во время вызова accounts, который является асинхронной функцией

var accountA;
var  accountB;
accounts = async () => {
    accountA = await server.loadAccount(Apub)

    console.log(accountA)
    accountB = await (server.loadAccount(Bpub))
}

accounts().then(() => {
    console.log(accountA);
})

Если у вас есть код выше вфункция асинхронная, тогда вы можете использовать await с accounts тоже

await accounts()
...