首页 > 解决方案 > 为什么 TypeScript 不强制执行 async/await 承诺?

问题描述

我有以下代码。performAsyncAction执行异步操作并返回Promise<Response>. 在someFunction 中,令我惊讶的是 TypeScript 没有警告不要在返回承诺的函数上使用 await。

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

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

我找到了一个相关的 linting 规则,它可能有助于promise-function-async

标签: javascripttypescriptasync-awaites6-promise

解决方案


这不是错误,而是预期的行为。

  1. Promises 早在 async/await 之前就存在了,你有几种方法来处理它们
  2. 等待承诺是功能的内部逻辑,而不是要求
  3. Typescript 很清楚你有 Promise 而不是 Promise 中的值,所以如果你想以错误的方式使用它,它会警告你
  4. 您提供的功能不是async,因此甚至不可能在那里等待
  5. await/async 和 Promises 在 Javascript 中是一样的,无论你是awaitPromise 还是.thenPromise,它都是唯一的语法糖(虽然有用)
  6. 很多情况下你不想等待新创建的 Promise,即允许一次处理多个 Promise,从而减少处理请求的时间

推荐阅读