赞
踩
async 函数是使用async
关键字声明的函数。 async 函数是AsyncFunction构造函数的实例, 并且其中允许使用await
关键字。async
和await
关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise
。
- async function main(){
- //1. 如果返回值是一个非Promise类型的数据,会返回一个resolved的promise对象,值为该数据
- // return 521;
- //2. 如果返回的是一个Promise对象
- return new Promise((resolve, reject) => {
- resolve('OK');
- // reject('Error');
- });
- //3. 抛出异常
- // throw "Oh NO";
- }
-
- let result = main();
-
- console.log(result);
'运行
- async function main(){
- let p = new Promise((resolve, reject) => {
- resolve('OK');
- // reject('Error');
- })
- //1. 右侧为promise的情况
- // let res = await p;
- //2. 右侧为其他类型的数据
- let res2 = await 20;
- // console.log(res2); // 20
- //3. 如果promise是失败的状态
- // try{
- // // let res3 = await p;
- // }catch(e){
- // console.log(e);
- // }
- }
-
- main();
'运行
- const fs = require('fs');
- const util = require('util');
- // 将 API 转为promise形式的函数
- const mineReadFile = util.promisify(fs.readFile);
-
- //回调函数的方式
- // fs.readFile('./resource/1.html', (err, data1) => {
- // if(err) throw err;
- // fs.readFile('./resource/2.html', (err, data2) => {
- // if(err) throw err;
- // fs.readFile('./resource/3.html', (err, data3) => {
- // if(err) throw err;
- // console.log(data1 + data2 + data3);
- // });
- // });
- // });
-
- //async 与 await
- // 出错也不需要每一层都去判断,使用try...catch即可
- async function main(){
- try{
- //读取第一个文件的内容
- let data1 = await mineReadFile('./resource/1.html');
- let data2 = await mineReadFile('./resource/2.html');
- let data3 = await mineReadFile('./resource/3.html');
- console.log(data1 + data2 + data3);
- }catch(e){
- console.log(e.code);
- }
- }
-
- main();
'运行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。