Блок обещания then () не ждет внутреннего ожидания - PullRequest
0 голосов
/ 10 июля 2020

У меня есть следующие методы:

  this.skickPlayerService.loadSkick().then(
  (skick) => {
    var skickBlob = skick as Blob;
  },
  (error) => {}
);

Вызов метода asyn c выглядит следующим образом:

async loadSkick(): Promise<any> {
try {
  return await this.graphClient
    .api('/me/drive/items/25647924903216B8%21227697')
    .get(async (err, res) => {
      if (err) {
        return;
      }
      return await fetch(res['@microsoft.graph.downloadUrl']).then(
        async function (response) {
          return await response.blob(); // I need the call to wait until this is executed
        }
      );
    });
  } catch (error) {}
}

Проблема в том, что loadSkick () возвращается, когда. выполняется, но значение все еще равно нулю, потому что следующий внутренний вызов "return await response.blob ();" еще не был выполнен.

Мне нужно вернуться к вызывающему только после того, как будет получен результат return await response.blob (); выполняется

1 Ответ

1 голос
/ 10 июля 2020

Из do c похоже, что это должно работать:

async loadSkick(): Promise<any> {
    const res = await this.graphClient
        .api('/me/drive/items/25647924903216B8%21227697')
        .get();
    const response = await fetch(res['@microsoft.graph.downloadUrl']);
    return response.blob();
}

Вызывающий loadSkick() должен будет использовать возвращенное обещание с await или .then(), чтобы получить конечный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...