ES6入门---第三单元 模块三:async、await

async function fn(){ //表示异步:这个函数里面有异步任务

let result = await xxx //表示后面结果需要等待

}

读取文件里数据实例:

javascript 复制代码
const fs = require('fs');

//简单封装  fs封装成一个promise
const readFile = function (fileName){
    return new Promise((resolve, reject) =>{
        fs.readFile(fileName, (err, data) =>{
            if(err) reject(err);
            resolve(data);
        });
    });
}


//async
async function fn(){
    let f1 = await readFile('data/a.txt');
    console.log(f1.toString());
    let f2 = await readFile('data/b.txt');
    console.log(f2.toString());
    let f3 = await readFile('data/c.txt');
    console.log(f3.toString());
    
}
fn();
javascript 复制代码
async function fn(){
            throw new Error('Error出错了');//新建一个错误
        }

        fn().then(res=>{
            console.log(res);
        }, err =>{//别忘了设计错误
            console.log(err);
        })

也可以为catch版

javascript 复制代码
 fn().then(res=>{
            console.log(res);
        }).catch(err=>{
            console.log(err);
        })

async特点:

  1. await只能放到async函数中

  2. 相比genrator语义化更强

  3. await后面可以是promise对象,也可以数字、字符串、布尔

  4. async函数返回是一个promise对象

  5. 只要await语句后面Promise状态变成 reject, 那么执行完reject后整个async函数会中断执行

如:

javascript 复制代码
 async function fn(){
            await Promise.reject('出现问题了');
            let a = await Promise.resolve('success');
            console.log(a);
        }

        fn().then(res=>{
            console.log(res);
        }).catch(err=>{
            console.log(err);
        })

如何解决async函数中抛出错误,影响后续代码:

a). 最好用此法

javascript 复制代码
try{

		}catch(e){
			
		}

要把涉及网络的代码全包涵在try里以防其中之一出错

javascript 复制代码
try{
		let f1 = await readFile('data/a.txt');
		let f3 = await readFile('data/c.txt');
		let f2 = await readFile('data/b.txt');
	}catch(e){}

b). promise本身catch

javascript 复制代码
  async function fn(){
            await Promise.reject('出现问题了').catch(err=>{
                console.log(err);
            });
            
            let a = await Promise.resolve('success');
            console.log(a);
        }

        fn().then(res=>{
            console.log(res);
        });
相关推荐
Jerry15 小时前
使用 Material 3 在 Compose 中设置主题
前端
耶啵奶膘15 小时前
uni-app头像叠加显示
开发语言·javascript·uni-app
chéng ௹15 小时前
uniapp 封装uni.showToast提示
前端·javascript·uni-app
生擒小朵拉16 小时前
STM32添加库函数
java·javascript·stm32
tuokuac16 小时前
nginx配置前端请求转发到指定的后端ip
前端·tcp/ip·nginx
程序员爱钓鱼16 小时前
Go语言实战案例-开发一个Markdown转HTML工具
前端·后端·go
万少16 小时前
鸿蒙创新赛 HarmonyOS 6.0.0(20) 关键特性汇总
前端
还有多远.17 小时前
jsBridge接入流程
前端·javascript·vue.js·react.js
蝶恋舞者17 小时前
web 网页数据传输处理过程
前端
非凡ghost17 小时前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求