koa2 使用 async 、await、promise解决异步的问题
2024-08-24 12:27:02
koa代码编写上避免了多层的嵌套异步函数调用 async await来解决异步
- async await 需要依赖于promise
三主角: __函数前面 async, 内部才能await,要想await能有用,就用promise包裹他__
1._函数前面 async
app.use(async (ctx)=>{
if(ctx.url==='/') {
let data=await asyncReadFile();
ctx.body=data;
// 设置响应头
ctx.set('content-type','text/html;charset=utf-8'); //content-type: text/html;charset=utf-8
} else {
ctx.body='ok';
}
});
2.内部才能await
let data=await asyncReadFile();
3. 返回一个Promise 对象(包含两个参数)
function asyncReadFile() {
return new Promise(function(resolve,reject) {
fs.readFile('./index.html',(err,data)=>{
// 1:失败,err 2:成功需要data
if(err) {
reject(err);
return;
}
// 成功
resolve(data);
});
});
}
网整例子:
app.js
const fs = require('fs');
const koa = require('koa');
let app=new koa();
function asyncReadFile() {
return new Promise(function(resolve,reject) {
fs.readFile('./index.html',(err,data)=>{
// 1:失败,err 2:成功需要data
if(err) {
reject(err);
return;
}
// 成功
resolve(data);
});
});
} app.use(async (ctx)=>{
if(ctx.url==='/') {
let data=await asyncReadFile();
ctx.body=data;
// 设置响应头
ctx.set('content-type','text/html;charset=utf-8'); //content-type: text/html;charset=utf-8
} else {
ctx.body='ok';
}
}); app.listen();
html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1>hell world</h1>
</body>
</html>
效果:
最新文章
- xml 的读写
- python自省函数getattr的用法
- 【基础知识】.Net基础加强 第05天
- java操作spark1.2.0
- OC - 30.如何封装自定义布局
- 配置snort
- Java ArrayList小程序理解
- HeapAlloc,GlobalAlloc,LocalAlloc,VirtualAlloc,malloc,new的异同
- php一句话反弹bash shell
- 【SpringBoot笔记】SpringBoot如何正确关闭应用
- 如何让gitbook与github仓库关联
- php-------代码加密的几种方法
- .net core redis使用
- java沙盒入门(2)
- es与hive整合
- tpo-08 C1 submit a document for graduation
- centos 安装flash
- 使用带参数的SQL语句向数据库中插入空值
- d190305面试题01总结
- pat1035. Password (20)