Node.js中async和await关键字如何使用(async,await,node.js,开发技术)

时间:2024-05-06 16:42:36 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Node.js%E4%B8%ADasync%E5%92%8Cawait%E5%85%B3%E9%94%AE%E5%AD%97%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8

async 和 await 是 ES2017 中提出来的,async 和 await 两个关键字的出现,简化的 Promise 的使用。

async关键字使用比较简单,所以 async 的使用注意以下三点即可 :

async 用于修饰一个 function

async 修饰的函数,总是返回一个 Promise 对象

函数内的所有值,将自动包装在 resolved 的 promise 中

await关键字比较繁琐,注意点比较多。首先,await 只能出现在 async 函数内,await 让 JS 引擎等待直到promise完成并返回结果,语法:

let value = await promise对象; // 等待promise对象的结果,然后将结果赋值给 value

由于await需要等待promise执行完毕,所以 await会 暂停函数的执行,但不会影响其他同步任务。

所以,await总结如下四点:

await只能出现在异步函数中!

await能停止代码执行,让后面的同步代码,先执行;

await后面跟随的是一个promise对象;

await返回的是: Promise对象中的then()中的回调函数中的参数res;

js代码开始执行后,主线程执行栈中会把任务分为两类.

一类是同步任务, 一类是异步任务; 主线程执行栈优先执行同步任务,

异步任务会被放入特定的处理程序中,满足条件后,被放到消息(任务/事件)队列中,

主线程执行栈中所有的同步任务执行完毕之后,通过事件循环去消息(任务/事件)队列中,

挑选优先满足条件的程序,放入主线程执行栈中执行。事件循环,周而复始,一直执行。

在ES3 以及以前的版本中,JavaScript本身没有发起异步请求的能力,也就没有微任务的存在。在ES5之后,JavaScript引入了Promise,这样,不需要浏览器,JavaScript引擎自身也能够发起异步任务了。 Tick会触发浏览器渲染,Promise不会触发,所以更加轻量级,多使用;

(macro)task,可以理解是每次执行栈执行的代码就是一个宏任务

主线程上的执行栈中所有的代码块

setTimeout

setInterval

Ajax

事件

微任务(microtask)是宏任务中的一个部分,它的执行时机是在同步代码执行之后,下一个宏任务执行之前。

总结起来,微任务有:

Promise.then

process.nextTick(Node.js 环境)

JS优先执行同步任务,然后执行微任务,最后执行宏任务。

总结:Promise中的then()比大部分异步代码,优先执行!

本文:Node.js中async和await关键字如何使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:SpringBoot中怎么利用AOP和拦截器实现自定义注解下一篇:

6 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18