Nodejs异步编程
异步函数:异步函数是异步编程语法的终极解决方案,它可以把异步代码写成同步的形式,让代码不再有回调函数嵌套,使代码变得更清晰。
const fn = async () =>{};
async function fn (){}.
1.async关键字
普通函数定义前加async关键字,普通函数变成异步函数;
异步函数默认返回promise对象;
在异步函数内使用return关键字进行结果返回,结果会被包裹在返回的promise对象中;
return代替resolve()方法,throw代替reject()方法;
调用异步函数再链式调用throw关键字抛出异常,catch方法捕捉异常;
调用异步函数再链式调用then方法获取异步函数执行结果。
async function f() {
throw '发生错误'; //代替reject
return '123'; //代替resolve
}
f().then((data)=>console.log(data)).catch((err)=>console.log(err))
2.await关键字
await关键字只能出现在异步函数中;
await promise,await 后面只能写promise对象,不能写其他类型API;
await 关键字可以暂停异步函数向下执行,直到promise返回结果。
async function p1() { return '1' };
async function p3() { return '3' };
async function p2() { return '2' } ;
const run = async ()=>{
let r1 = await p1();
let r2 = await p2();
let r3 = await p3();
console.log(r1);
console.log(r2);
console.log(r3) }
run();
3.asyncFunctionReadfile.js实例
const fs = require('fs'); //改造现有异步函数api 让其返回promise对象 从而支持异步函数语法
const promisify = require('util').promisify; //调用promisify方法改造现有异步api 让其返回promise对象
const readFile = promisify(fs.readFile);
const run = async ()=>{ l
et r3 = await readFile('./3.txt','utf8');
let r1 = await readFile('./1.txt','utf8');
let r2 = await readFile('./2.txt','utf8');
console.log(r3);
console.log(r1);
console.log(r2) }
run();
最新文章
- Cookie案例:简单登录界面中的应用
- SAP SE11 网格布局显示
- Quartz2D 画大白
- sharepoint项目遇到的WebDAV和HTTP PUT的安全隐患解决办法
- Failed to connect to JobMonApp on port 13491
- UI交互设计的网站
- 如何用jar命令对java工程进行打包
- fsdfasfsa
- PHP获取客户端操作系统,浏览器,语言,IP,IP归属地等
- 歪国人DIY的MINI四轴
- MVC中登录页图片验证码总结
- cURL的运用,文字替换
- jmeter-命令行执行脚本
- 《SpringMVC从入门到放肆》三、DispatcherServlet的url-pattern配置详解
- 比较Maven和Ant
- 纯css画直角三角形
- 使用HttpUtils完成Http Basic 认证
- [daily][tcpdump][bpf] 如何用tcpdump抓到一个分片包
- RFBnet论文笔记
- linq to sql 去重复