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

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


      

相关文章:

  • LeetCode每日一题5.4
  • C++多态(上)
  • Java面试大纲(以及常见面试问答)
  • 如何查看电脑IP地址和归属地:全面指南
  • 强化学习机器人模拟器——RobotApp:一个交互式强化学习模拟器
  • Dify框架面试内容整理-Dify部署后常见问题有哪些?如何排查?
  • 【循环依赖(Circular Dependency)】
  • C++多态(下)
  • 自监督学习(Self-supervised Learning)李宏毅
  • 第十章.XML
  • langchain中 callbacks constructor实现
  • devtmpfs_create_node
  • WPF中Binding
  • 判断声音“混”的原因
  • 委托构造函数是什么?
  • C++基础算法:Dijkstra
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段(1):语法单词
  • MCP协议与Dify集成教程
  • 【翻译、转载】【转载】LLM 的函数调用与 MCP
  • 探索大语言模型(LLM):Qwen3速测指南(transformers调用)
  • 这样喝酸奶相当于在喝糖水,会导致娃龋齿、肥胖
  • 熬夜又不想伤肝?方法只有一个
  • 申活观察|人潮涌动成常态,豫园为何常来常新?
  • 《一鸣惊人》五一特别节目:以戏曲为桥梁,展现劳动者的坚守
  • 49:49白热化,美参议院对新关税政策产生巨大分歧
  • 马上评|科学谋划“十五五”,坚定不移办好自己的事