10-Node.js学习笔记-异步函数

异步函数

异步函数是异步编程语法的终极解决方案,它可以让我们将异步代码写成同步的形式,让代码不再有回调函数嵌套,是代码变得清晰明了

``` const fn = async()=>{} async function fn(){} ``` ``` //1.在普通函数定义的前面加上async关键字 普通函数就变成了异步函数 //2.异步函数默认返回值是promise对象 //3.在异步函数内部使用throw关键字进行错误的抛出 async function fn(){ throw '发生了一些错误' return 123; } fn().then(function(data){ console.log(data) }).catch(function(err){ console.log(err) }) ``` ``` //then(参数1,参数2) //参数1:用于获取promise对象成功的回调函数 //参数2:用于获取promise对象失败的回调函数 async function fn(a){ if(a !=10){ throw "变量值错误,不等于10"; }else{ return "变量值等于10"; } } fn(11).then(function(data){ console.log(data); },function(info){ console.log(info); }) ```

async关键字

1.普通函数定义前加async关键字 普通函数变成异步函数

2.异步函数默认返回promise对象

3.在异步函数内部使用return关键字进行结果返回,结果会被包裹的promise对象中,return关键字代替了resolve方法

4.在异步函数内部使用throw关键字抛出程序异常

5.调用异步函数再链式调用then方法获取异步函数执行结果

6.调用异步函数再链式调用catch方法获取异步函数执行的错误信息

await关键字

1.await关键字只能出现在异步函数中

2.await promise await后面只能写promise对象 写其他类型的API是不可以的

3.await关键字可以暂停异步函数向下执行 直到promise返回结果

``` async function p1(){ return 'p1' } async function p2(){ return 'p2' } async function p3(){ return 'p3' } async function p4(){ return 'p4' } async function p5(){ return 'p5' } async function fun(){ var a = await p1(); var b = await p2(); var c = await p3(); var d = await p4(); var e = await p5(); console.log(a); console.log(b); console.log(c); console.log(d); console.log(e); } fun() ```

异步函数的应用

``` const fs = require('fs'); //改造现有异步函数api 让其返回promise对象 从而支持异步函数语法 const promisify = require('util').promisify; const readFile = promisify(fs.readFile); async function run(){ let r1 = await readFile('./1.txt','utf8') let r2 = await readFile('./2.txt','utf8') let r3 = await readFile('./3.txt','utf8') console.log(r1) console.log(r2) console.log(r3) } run(); ```
原文地址:https://www.cnblogs.com/foreverLuckyStar/p/12073493.html