首页 > 解决方案 > 如何使用 v8 typescript 中发布的顶级异步等待

问题描述

我正在努力从 v8 功能列表中了解这个新功能(顶级异步等待)到底意味着什么

当我尝试在 vanilla JS 中运行时,结果对我来说似乎完全一样,这就是我在 vanilla js 中尝试做的事情。

(() => {
  let test1 = async() =>
    async() => {
      return 'true';
    };

  (async() => {
    let result = await test1();
    result = await result();
    console.log('r', result)
  })();

})()

我想知道这个功能到底是什么意思以及如何使用它。

标签: javascripttypescriptasync-await

解决方案


这是v8 的文档。对我来说,这是非常自我描述的,对我个人来说是一个非常方便的功能。

以前,您不能随便写await someAsyncFunction(),因为要等待函数,您必须调用函数await内部async

例子:

main.js

const fs = require('fs');
const util = require('util');
const unlink = util.promisify(fs.unlink); // promisify unlink function
await unlink('file_path'); // delete file

上面的代码不起作用。最后一行会给你一个错误。所以,我们之前做的是这样的:

async function main() {
    const fs = require('fs');
    const util = require('util');
    const unlink = util.promisify(fs.unlink); // promisify unlink function
    await unlink('file_path'); // delete file
}
main();

但是,现在您不必(!)必须这样做。第一个代码可以工作。

这个答案是基于我的理解


推荐阅读