回调地域
- 目前,我们接触过的异步任务有哪些?
- 事件
- 定时器
- Ajax
- 文件操作
- 数据库操作
- 使用什么来获取异步任务的结果?
- 回调函数 回调地域解决异步的问题
- 使用回调函数处理异步任务的问题
- 假设有几个文件,a.txt b.txt c.txt
- 需求是,读取三个文件里面的内容,并按照顺序一次输出三个文件的结果。
/*
1. 创建promise文件夹
2. 初始化:npm init -y
3. 设置type属性: "module"
4. 体验回调地域-先读取a.txt,然后读取b.txt,最后读取 c.txt
const fs = requirs('fs)
import fs from 'fs'
*/
// 读取文件
import fs from "fs";
// 读取a 文件
fs.readFile("./txt/a.txt", "utf8", (err, data) => {
console.log(data);
// 读取b 文件
fs.readFile("./txt/b.txt", "utf8", (err, data) => {
console.log(data);
});
// 读取c 文件
fs.readFile("./txt/c.txt", "utf8", (err, data) => {
console.log(data);
});
});
- 假设需要读取的文件很多,name代码将会缩进 的越来越多,像下面那样。
回调地域
- JS中或node中,都大量的使用了回调函数进行异步操作,而异步操作什么时候返回结果是不可控的。
- 如果我们希望几个异步请求按照顺序来执行,那么就需要将这些异步操作嵌套起来。
- 嵌套的层数特别多,就会形成 横向金字塔,也叫做 回调地域。
Promise 介绍
- 异步操作是 JavaScript 编程的麻烦事,麻烦到一直有人提出各种各样的方案,试图解决这个问题。
- 早期使用回调函数处理异步编码,但存在回调地域的问题,
- ES6中,新增了 Promise 对象 ,从此异步编程摆脱了回调函数的束缚。