Чтение асинхронного набора объектов с помощью Await - PullRequest
0 голосов
/ 14 октября 2019

Глобальный объект имеет свой ключ / значение (thing), заданное в асинхронной функции setter(); с использованием await. Как асинхронно прочитать значение thing в другой асинхронной функции getter();?

Я получаю неопределенную ошибку, потому что getter(); работает до завершения await в setter();.

let obj = {};

async function af() {
    return 1;
}

(async function setter () {
  obj.thing = await af();
})();

(async function getter () {
  let thing = obj.thing;
})();

1 Ответ

0 голосов
/ 14 октября 2019

Вы должны подождать, пока завершится функция установки, вы получите проблему состояния гонки с этим подходом.

Пример того, как это будет работать:

var obj = {};

async function af() {
    return 1;
}

(async function() {
    await (async function setter () {
      obj.thing = await af();
    })();

    await (async function getter () {
      let thing = obj.thing;
    })();

    console.log(obj.thing);
})();

ПриВ конце функции должен записываться 1, возвращаемый функцией af

...