我试图更好地理解async function
JavaScript 中的 an 在技术上是什么,即使我基本上知道如何使用它们。
许多对 async/await 的介绍让人相信一个async
函数基本上只是一个承诺,但显然不是这样(至少不是Babel6 转译的代码):
async function asyncFunc() {
// nop
}
var fooPromise = new Promise(r => setTimeout(r, 1));
console.clear();
console.log("typeof asyncFunc is", typeof asyncFunc); // function
console.log("typeof asyncFunc.next is", typeof asyncFunc.next); // undefined
console.log("typeof asyncFunc.then is", typeof asyncFunc.then); // undefined
console.log("typeof fooPromise is", typeof fooPromise); // object
console.log("typeof fooPromise.next is", typeof fooPromise.next); // undefined
console.log("typeof fooPromise.then is", typeof fooPromise.then); // function
await
尽管如此,承诺绝对是可能的,例如await fooPromise()
.
是
async funtion
它自己的东西并且await
与承诺兼容吗?并且,有没有办法区分简单
function
和async function
运行时(以 Babel 兼容的方式)?