javascript - 为什么 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
解决方案
这不是错误,而是预期的行为。
- Promises 早在 async/await 之前就存在了,你有几种方法来处理它们
- 等待承诺是功能的内部逻辑,而不是要求
- Typescript 很清楚你有 Promise 而不是 Promise 中的值,所以如果你想以错误的方式使用它,它会警告你
- 您提供的功能不是
async
,因此甚至不可能在那里等待 - await/async 和 Promises 在 Javascript 中是一样的,无论你是
await
Promise 还是.then
Promise,它都是唯一的语法糖(虽然有用) - 很多情况下你不想等待新创建的 Promise,即允许一次处理多个 Promise,从而减少处理请求的时间
推荐阅读
- youtube - YouTube API 是否有 webhook 或套接字?有新评论时通知我?[塞拉达]
- javascript - Nodejs - 数组不返回任何内容
- javascript - 使用 javascript 更新按钮的文本
- java - 子类使用自身内部的另一个子类扩展同一个超类
- python - 出于某种原因,我不断得到一个 unindent 不匹配任何外部缩进级别(我刚开始 python)
- c# - 如何同步执行异步方法?
- c - C中的指针和循环
- python-asyncio - as_completed 识别 cooutie 对象
- python - 有没有办法在断点处拍摄 python 调试会话的“快照”?
- react-native - 如何在 Drawer.Screen 的 Home 和 Notifications 之前放置一个图标