手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Node.js的Async和Await函数

时间:2024-10-14 20:10:34

1、在async函数中,可以等待 Promise 完成或捕获它拒绝的原因。在Promise中实现一些自己的逻辑的话。

Node.js的Async和Await函数

2、可以使用 async/await 让这个代码看起来像同步执行的代码。

Node.js的Async和Await函数

3、在老的v8版本中,如果有有个 promise 的拒绝没有被处理你会得到一个警告,可以不用创建一个拒绝错误监听函数。然而,建议在这种情况下退出你的应用程序。因为当你不处理错误时,应用程序处于一个未知的状态。

Node.js的Async和Await函数

4、as鲻戟缒男ync函数模式在处理异步操作时,有很多例子让他们就像处理同步代码一样。如果使用 Promise 或 callbacks 来解决问题时需要使用很复省檑挖毳杂的模式或者外部库。当需要再循环中使用异步获取数据或使用 if-else 条件时就是一种很复杂的情况。指数回退机制使用 Promise 实现回退逻辑相当笨拙

Node.js的Async和Await函数

5、可以使用async/await重新这个例子,使其更简单。

Node.js的Async和Await函数

6、有3个异步函数依次相互依赖的情况,必须从几个难看的解决方案中进行选择。functionA 返回一个 Promise ,那么 functionB 需要这个值而 functioinC 需要 functionA 和 functionB 完成后的值。方案1: then 圣诞树

Node.js的Async和Await函数

7、用这个解决方案,在第三个 then 中可以获得 valueA 和 valueB ,然后可以向前面两个 then 一样获得 valueA 和 valueB 的值。这里不能将圣诞连含哲叨树(毁掉地狱)拉平,如果这样做的话会丢失闭包, valueA 在 functioinC 中将不可用。方案2:移动到上一级作用域

Node.js的Async和Await函数

8、在这颗圣诞树中,使用更高的作用域保变量 valueA ,因为 valueA 作用域在所有的 then 作用域外面,所以 functionC 可以拿到第一个 functionA 完芤晟踔肿成的值。这是一个很有效扁平化 .then 链"正确"的语法,然而,这种方法需要使用两个变量 valueA 和 v 来保存相同的值。方案3:使用一个多余的数组

Node.js的Async和Await函数

9、在函数 functionA 的 then 中使用一个数组将 valueA 和 Promise 一起返回,这样能有效的扁平化圣诞树(回调地狱)。方案4:写一个帮助函数

Node.js的Async和Await函数

10、写一个帮助函数来屏蔽上下文变量声明。但是这样的代码非常不利于阅读,对于不熟悉这些魔法的人就更难了。使用 async/await 的问题神奇般的消失

Node.js的Async和Await函数

11、数组迭代方法可以在 map 、 filter 、 reduce 方法中使用async函数,看起来不是很直观,可以在控制台中实验以下代码。

Node.js的Async和Await函数
Node.js的Async和Await函数

12、如果是map迭代数据你会看到返回值为 [ 2, 4, 6, 8 ] ,唯一的问题是每个值被 AsyncFunction 函数包裹在了一个 Promise 中所以如果想要获得它们的值,需要将数组传递给 Promise.All() 来解开 Promise 的包裹。

Node.js的Async和Await函数

13、如果在迭代器中如果你有一个长时间运行的同步逻辑和另一个长时间运行的异步任务,async/await版本任然常有用。这种方式当能拿到第一个值,就可以开始做一些计算,而不必等到所有 Promise 完成才运行计算。尽管结果包裹在 Promise 中,按顺序执行结果会更快。关于 filter 的问题即使上面filter函数里面返回了 [ false, true, false, true ] , await asyncThing(value) 会返回一个 promise 那么你肯定会得到一个原始的值。可以在return之前等待所有异步完成,在进行过滤。Reducing很简单,就是需要将初始值包裹在 Promise.resolve 中重写基于callback的node应用成Async 函数默认返回一个 Promise ,可以使用 Promises 来重写任何基于 callback 的函数,然后 await 等待他们执行完毕。在node中也可以使用 util.promisify 函数将基于回调的函数转换为基于 Promise 的函数重写基于Promise的应用程序要转换很简单, .then 将Promise执行流串了起来。可以直接使用`async/await。

Node.js的Async和Await函数

14、使用 Async/Await 将很大程度上的使应用程序具有高可读性,降低应用程序的处理复杂度(如:错误捕获),也使用 node v8+的版本不妨尝试一下,或许会有新的收获。

© 手抄报圈