ES6模块化-promise-高级用法
前端模块化规范
AMD
CMD
CommonJS
- ES6模块化规范取代之前的非标准语法, 导入使用
import
共享使用export
- 配置package.json 加入
type:"module"
es6模块化三种用法
默认导出, 默认导入
- 默认导出
1 | let n1 = 10 |
- 默认导入
1 | import m1 from './index.js' |
按需导出导入
- 名称保持一致
- 可以使用
as
重新命名 - 可以和默认导出配合使用
1 | // 按需导出 |
1 | // 按需导入,info 表示默认导出 |
直接导入
- 直接使用import, 直接导入执行模块中的代码
Promise
- 解决回调地狱的问题, 构造函数
- 使用promise读取文件
1 | import thenfs from 'then-fs' |
- 使用.catch 捕获错误 如果放到最后, 前面如果发生错误, 无法执行其他正确的程序;
使用promise.all方法
- 等待所有的异步操作完成后执行
1 | import thenfs from 'then-fs' |
使用promise.race方法
- 返回执行速度最快的promise
1 | import thenfs from 'then-fs' |
创建异步操作
- 失败的回调函数可以省略不写, 使用.catch来捕获
1 | import fs from 'fs' |
使用async/await获取返回值
1 | async function getfile() { |
- 注意事项
- 使用await必须使用async来修饰
- 在await第一次出现之前的代码都是同步执行, 之后的都是等待异步执行完成后执行
同步任务和异步任务
EventLoop
宏任务 微任务
- 宏任务
- 异步Ajax请求
- setTimeout,setInterval
- 文件操作
- 其他宏任务
- 微任务
- Promise.then .catch,.finally
- process.nextTick
- 其他微任务
- 每一个宏任务执行完之后, 都会进行一次判断微任务队列中是否存在未执行的微任务, 如果存在微任务 需要将所有的微任务执行完成后在继续执行下一个宏任务
try catch 捕获错误
- 使用try catch 来捕获错误, 并且在catch中进行处理
1 | import db from '../db/index.js' |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Harry の 心 阁!
评论