当前位置: 首页 > java >正文

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

async function fn(){  //表示异步:这个函数里面有异步任务
    let result = await  xxx    //表示后面结果需要等待
    
}

读取文件里数据实例:

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();
async function fn(){throw new Error('Error出错了');//新建一个错误}fn().then(res=>{console.log(res);}, err =>{//别忘了设计错误console.log(err);})

 也可以为catch版

 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函数会中断执行 

如:

 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). 最好用此法

try{}catch(e){}

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

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 

  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);});


      

http://www.xdnf.cn/news/3812.html

相关文章:

  • 网络:TCP三次握手、四次挥手
  • 介词:连接名词与句子其他成分的桥梁
  • 互联网大厂Java面试:从基础到实战
  • 【漫话机器学习系列】239.训练错误率(Training Error Rate)
  • vulkanscenegraph显示倾斜模型(6.4)-多线程下的记录与提交
  • Dalvik虚拟机和ART虚拟机
  • ART 下 Dex 加载流程源码分析 和 通用脱壳点
  • 【ArcGIS微课1000例】0145:如何按照自定义形状裁剪数据框?
  • 学习黑客Linux权限
  • 【中间件】brpc_基础_用户态线程中断
  • LeetCode每日一题5.4
  • 架构思维:利用全量缓存架构构建毫秒级的读服务
  • 2001-2023年 上市公司-企业广告支出数据-社科数据
  • 使用宝塔面板、青龙面板实现定时推送功能
  • 【数据结构】稀疏矩阵的快速转置
  • 单细胞测序数据分析试验设计赏析(二)
  • Android 输入控件事件使用示例
  • 信息系统监理师第二版教材模拟题第一组(含解析)
  • HTML学习笔记(7)
  • PostgreSQL 的 ANALYZE 命令
  • PostgreSQL 查看索引碎片的方法
  • 论文阅读笔记——STDArm
  • PostgreSQL 判断索引是否重建过的方法
  • 4电池_基于开关电容的均衡
  • Ubuntu 系统上广受好评的浏览器推荐
  • 蘑菇管理——AI与思维模型【94】
  • 【翻译、转载】使用 LLM 构建 MCP
  • 【五一培训】Day 3
  • 机器学习+多目标优化的算法如何设计?
  • AI跑得快,MCP来加速——模型计算平台在训练与推理中的硬核作用