Почему TypeScript не обеспечивает выполнение асинхронного / ожидающего выполнения обещания? - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть следующий код. performAsyncAction выполняет асинхронное действие c и возвращает Promise<Response>. В someFunction я был удивлен, что TypeScript не предупреждает о , а не , используя функцию await для функции, которая возвращает обещание.

function performAsyncAction() {
  return fetch('someservice');
}

function someFunction() {
    const result = await performAsyncAction(); // Was expecting typescript to give error here
}

Я нашел соответствующее правило linting, которое может помочь обещание функция-ASYN c

1 Ответ

1 голос
/ 27 февраля 2020

Это не ошибка, это предполагаемое поведение.

  1. Обещания существовали задолго до асинхронного ожидания, у вас есть несколько способов их обработки
  2. Ожидание внутреннего обещания logi c функции, а не требования
  3. Typescript хорошо знает, что у вас есть Promise, а не значение внутри этого Promise, поэтому он предупредит вас, если вы захотите использовать его неправильно
  4. Функция, которую вы предоставили, не async, поэтому там даже невозможно ожидать
  5. await / asyn c, и Обещания - это то же самое в Javascript, это не имеет значения, если вы await Обещание или, если вы .then Обещание, его единственное синтактическое c сахар (хотя и полезный)
  6. Во многих случаях вы не хотите ждать только что созданного Обещания, то есть разрешить обработку нескольких Обещаний одновременно, что сокращает время обработки запроса
...