Javascript 如何使用v8 typescript中发布的顶级异步等待

Javascript 如何使用v8 typescript中发布的顶级异步等待,javascript,typescript,async-await,Javascript,Typescript,Async Await,我正在努力理解这个新特性顶级异步等待的确切含义 当我尝试在vanila JS中运行时,结果对我来说似乎完全相同,下面是我尝试在vanilla JS中所做的 => { 让test1=async=> 异步=>{ 返回“true”; }; 异步=>{ 让结果=等待测试1; 结果=等待结果; 控制台。日志'r',结果 }; } 这是。对我来说,这是一个非常自我描述的功能,对我个人来说是一个非常方便的功能 以前,您不能直接从何处编写wait someasync函数,因为要等待函数,必须在异步函数中调用w

我正在努力理解这个新特性顶级异步等待的确切含义

当我尝试在vanila JS中运行时,结果对我来说似乎完全相同,下面是我尝试在vanilla JS中所做的

=> { 让test1=async=> 异步=>{ 返回“true”; }; 异步=>{ 让结果=等待测试1; 结果=等待结果; 控制台。日志'r',结果 }; } 这是。对我来说,这是一个非常自我描述的功能,对我个人来说是一个非常方便的功能

以前,您不能直接从何处编写wait someasync函数,因为要等待函数,必须在异步函数中调用wait

例如:

main.js

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

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();
但是,现在你不知道了!我必须这样做。第一个代码可以工作


这个答案基于我的理解

顶层异步等待允许您在模块的顶层等待异步函数返回的承诺,而无需声明单独的异步函数。最重要的是,现在可以方便地导出异步函数返回的值

例如,如果没有此功能,您需要创建一个单独的异步函数(通常的主异步函数),或者使用Promise.then来在顶层处理返回值,而不能简单地导出返回值

让test=async=>true; test.thensresult=>console.log'r',result; //甚至更冗长 异步=>{ console.logwait测试; }; //这将导出一个承诺,而不是返回值,true。 导出let结果=测试; //这会引发一个错误,因为导出应该是顶级的。 异步=>{ 导出let结果=等待测试; }; 但有了这一新功能,您只需执行以下操作:

让test=async=>true; 导出let结果=等待测试; console.logresult; 当您想要导出必须异步获取的值时,此功能特别有用;例如,您在运行时从网络中获得的值,或者像大型加密套件这样的模块,它很大,并且缓慢异步加载

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();