当前位置:网站首页>async-await
async-await
2022-08-03 00:07:00 【cjx177187】
async
作为一个关键字放在函数的前面,表示该函数是一个异步函数,意味着该函数的执行不会阻塞后面代码的执行 异步函数的调用跟普通函数一样
await
await即等待,用于等待一个Promise对象。它只能在异步函数 async function中使用,否则会报错
它的返回值不是Promise对象而是Promise对象处理之后的结果
await表达式会暂停当前 async function的执行,等待Promise 处理完成。若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,继续执行 async function,若 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因抛出。如果 await 操作符后的表达式的值不是一个 Promise,那么该值将被转换为一个已正常处理的 Promise。
使用方法举例:
index.js文件
var router=require("./router.js")
router.get("/home1",(req,res)=>{
res.end('{"info":"hello1"}')
})
router.get("/home2",(req,res)=>{
res.end('{"info":"hello2"}')
})
router.get("/home3",(req,res)=>{
res.end('{"info":"hello3"}')
})
router.js文件
var fs=require("fs")
var url=require("url")
var querysting=require("querystring")
var mime=require("mime")
let urls={}
var http=require("http")
let router=function(req,res){
//这个函数每次用户访问时运行
let pathname=url.parse(req.url).pathname
fs.readFile(router.basepath+pathname,(err,data)=>{
if(!err){
res.setHeader("content-Type",mime.getType(pathname))
res.end(data)
}else{
if(!urls[pathname]){ res.end("404 not found-mymvc")}
else{ urls[pathname](req,res)}
}
})
}
router.static=function(path){
this.basepath=path
}
router.get=function(url,cb){
urls[url]=cb
}
router.basepath=__dirname+"/public"
http.createServer(router).listen(8080)
module.exports=router;
index.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src='https://s1.pstatp.com/cdn/expire-1-M/axios/0.19.2/axios.js'></script>
</head>
<body>
<button onclick="fn()">点击显示数据</button>
<script>
async function fn(){
let data1=await axios('/home1')
console.log(data1)
let data2=await axios('/home2')
console.log(data2)
let data3=await axios('/home3')
console.log(data3)
}
</script>
</body>
</html>
运行代码;
边栏推荐
猜你喜欢
ASP.NET网络版进销存管理系统源码【源码免费分享】
图文详细解决IDEA使用Debug模式启动项目一直转圈圈跑起不来(亲测可以)
接口流量突增,如何做好性能优化?
机器学习-特征映射方法
Connect the Snowflake of CKAN tutorial CKAN to release to open data portal
解决错误:Optional int parameter ‘pageSize‘ is present but cannot be translated into a null value due to
【多线程】Thread类的基本用法
麒麟信安邀您抢先看 | openEuler 志高远,开源汇智创未来-开放原子全球开源峰会欧拉分论坛最详细议程出炉
聊聊 Nacos
Database auditing - an essential part of network security
随机推荐
6、Powershell命令配置Citrix PVS云桌面桌面注销不关机
DataGuard日常维护常见问题之数据同步异常
科捷智能冲刺科创板:年营收12.8亿 顺丰与日日顺是股东
【软考 系统架构设计师】软件架构设计① 软件架构的概念
心电记录电路设计(框图/波形以及信号放大器的选择)
2022 Shandong International Youth Eye Health Industry Exhibition, Vision Health Exhibition, Optometry Exhibition
解决错误:Optional int parameter ‘pageSize‘ is present but cannot be translated into a null value due to
CIO修炼手册:成功晋升CIO的七个秘诀
Heartwarming AI Review (1)
一套开源的可快速搭建自己的物联网/智能家居系统源码
开源聚力,共创未来 | 麒麟信安祝贺openKylin首个体验版正式发布!
2022 开放原子全球开源峰会 | 麒麟信安携手openEuler助力开源产业繁荣发展
Moco of Mock tools use tutorial
SAP 电商云 Spartacus UI 的持续集成 - Continous integration
机器学习-特征映射方法
matlab常微分方程在传染病建模中的应用
vue3的keepAlive缓存组件
【QT】自定义工程封装成DLL并如何调用(带ui界面的)
Carefully organize 16 MySQL usage specifications to reduce problems by 80% and recommend sharing with the team
关于地图GIS开发事项的一次实践整理(上)