等待一个甚至不调用它的函数是没用的。但它不会生成编译时错误或运行时错误。我无法弄清楚在什么情况下任何人都会等待一个功能
在以下代码中,将不会执行foo
。为什么打字稿禁止它?
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();
答案 0 :(得分:3)
因为await <expression>
期望<expression>
成为承诺。如果它不是Promise(通过promise定义),那么该值将被包装到Promise中。您可以从msdn.blogs
ping
的async-await示例
正式地,您可以预期await 10;
是正确的。因为您不能禁止将普通对象或原始值包装到Promises中。因此await foo;
作为普通对象值foo
的包装器(javascript are objects中的函数,你知道吗,对吧?)
你会在哪里使用它?
想象一下当你事先不知道操作是否需要时间的情况。例如,您有一个缓存实现。
如果对象在内存中,则不必从源(db或web)读取它,这将是异步操作。因此它同步解析(从内存中读取)。但是界面应该是相同的。所以你将await
一个普通的对象。