Promise,ES6模块化

ES6模块化:

太多的模块化规范给开发者增加了学习的难度和开发的成本,因为,官方制定了ES6模块化规范。取代了 AMD,CMD(浏览器端),CommonJS(服务器端)

ES6模块化规范中的定义:

  • 每个 js 文件都是一个独立的模块
  • 导入其他模块成员使用 import 关键字
  • 向外共享模块化成员使用 export 关键字

在node中体验ES6模块化:

  • 初始化包管理配置文件: cnpm init -y
  • 在配置文件中增加配置选项: “type”: "module",  不加这一选项,默认type是commonjs
  • node版本需要高于等于 v14.15.1
  • 接受名称不能以数字开头

主要包含三种语法:

  1. 默认导出/入
    1. export default 默认导出的成员对象,多个导出成员用逗号分隔
    2. import 接受名称 from ‘ 模块标识符 ’
    3. 在每个模块中,只允许使用唯一的一次export default ,否则会报错
  2. 按需导出/入
    1. 语法: export 按需导出的成员
    2. import { 接受名称1,接受名称2 } from ‘ 模块标识符 ’
    3. 可以多次按需导出
    4. 按需导入的成员名称必须和按需导出的名称一致
    5. 按需导入时,可以使用as 关键字进行重命名
    6. 按需导入可以和默认导入一起使用
  3. 直接导入并执行模块中的代码
    1. import ‘ 模块标识符 ’

Promise:

  •  是一个构造函数 new 出来的promise 实例对象代表一个异步操作

.then()  用来预先指定成功和失败的回调函数

  •  p.then(成功的回调函数,失败的回调函数)
  •  p.then( result=> { }, error=> { } )
  •  成功的回调函数是必选的,失败的回调函数是可选的
  •  通过 .then()  的链式调用,即可解决回调地狱的问题,因为,如果上一个.then()  中返回了一个Promise 对象,则可以通过下一个 .then()  继续进行处理

.catch()  如果发生了错误,可以使用 .catch()  进行捕获处理

  • .catch( err => {} )
  • 捕获到错误之后,前面的.then() 就不会被执行
  • 如果不希望因为 .catch() 导致前面的 ,then()  不执行,可以将 .then 写在后面

 .all()  会发起并行的 Promise 异步操作,等所有的异步操作全部结束后才会执行到下一步 .then 操作(等待机制)

 promise 实例的顺序就是最后拿到结果的顺序:

 另一种写法:

 .race() 会发起并行的 promise 异步操作,只要任何一个异步操作完成,就会立即执行下一步的 .then 操作,(赛跑机制)

 

 结果会返回执行结束最快的一个 promise 实例:

 基于promise,自己封装一个读文件的操作:

要求:

 getFile() 的基本定义:

 创建具体的异步操作:

 如何向用户返回成功或者失败的结果:

 代码:

 结果:

 或者通过 .catch 也同样可以捕获到发生的错误:

async / await:

是ES8 引入的新语法,用来简化promise 的异步操作。

 注意事项:

  • 在function 中使用了 await,则function 必须被 async 修饰
  • 在 async 之前的代码会同步执行,await 之后的代码都会被异步执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值