当然,我们永远不会运行到 doAsyncOp 中的第二个缺点,也不会运行到 return 语句,因为在那之前抛出的缺点已经中断了函数运行。
问题
如不雅你刚开端应用 async 函数,须要当心嵌套函数的问题。比如,如不雅你的 async 函数中有另一个函数(平日是回调),你可能认为可以在个中应用 await ,但实际不克不及。你只能直接在 async 函数中应用 await 。
- async function getAllFiles(fileNames) {
- return Promise.all(
- fileNames.map(function(fileName) {
- var file = await getFileAsync(fileName);
- return parse(file);
- })
- );
- }
第 4 行的 await 无效,因为它是在一个通俗函数中应用的。不过可以经由过程为回调函数添加 async 关键字来解决这个问题。
- async function getAllFiles(fileNames) {
- return Promise.all(
- fileNames.map(async function(fileName) {
- var file = await getFileAsync(fileName);
- return parse(file);
- })
- );
- }
你看到它的时刻会认为理所当然,即便如斯,仍然须要当心┞封种情况。
也许你还想知道等价的应用 Promise 的代码:
接下来的问题是关于把 async 函数看作同步函数。须要记住的是,async 函数内部的的代码是同步运行的,然则它会急速返回一个 Promise,并持续运行外面的代码,比如:
- var a = doAsyncOp(); // one of the working ones from earlier
- console.log(a);
- a.then(function() {
- console.log("`a` finished");
- });
- console.log("hello"
推荐阅读
说到可视化,就不得不说一下大年夜数据,毕竟可视化是解决大年夜数据的一种高效的手段,而如今人人都在谈论大年夜数据,大年夜数据 ≠ 稀有据 ≠ 数据量大年夜, 离谱的是,如今就连>>>详细阅读
本文标题:用Async函数简化异步代码
地址:http://www.17bianji.com/lsqh/34848.html
1/2 1