gpt4 book ai didi

typescript - 为什么 `await` 函数在 Typescript 中不是错误?

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:52 24 4
gpt4 key购买 nike

等待一个甚至不调用它的函数是没有用的。但它不会产生编译时错误或运行时错误。我不知道在什么情况下有人会等待函数。
在下面的代码中,foo 不会被执行。为什么 Typescript 不禁止它?

async function foo(){
console.log("foo");
}
async function bar(){
//correct usage should be: await foo();
await foo;
}
bar();


//generated es6 code.
function foo() {
return __awaiter(this, void 0, void 0, function* () {
});
}
function bar() {
return __awaiter(this, void 0, void 0, function* () {
yield foo;
});
}
bar();

最佳答案

因为 await <expression>期待 <expression>成为一个 promise 。如果它不是 Promise(根据 promise 定义),那么该值将被包装到 Promise 中。您可以研究 ping 的异步等待示例来自 msdn.blogs

正式你可以期待await 10;是正确的。因为你不能禁止将普通对象或原始值包装到 Promises 中。因此 await foo;用作普通对象值的包装器 foo (函数在 javascript are objects 中,你知道,对吧?)

你会在哪里使用它?

想象一下您事先不知道操作是否需要时间的情况。例如,您有一个缓存实现。

如果对象在内存中,您不必从源(数据库或网络)读取它,这将是一个异步操作。所以它是同步解析的(从内存中读取)。但是界面应该是一样的。所以你会await一个普通的对象。

关于typescript - 为什么 `await` 函数在 Typescript 中不是错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37089882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com