案例:一次读取三个文件的内容,由于读取文件的api是异步api,所以我们要在回调里面完成,因此就有了回调地狱.
const fs = require('fs'); //第一个promise对象执行第一个文件的读取 let p1 = () => { return new Promise((resolve, reject) => { fs.readFile('1.txt', 'UTF8', (err, result) => { if (err) { reject(err); return; } resolve(result); }); }); }; //第二个promise对象执行第二个文件的读取 let p2 = () => { return new Promise((resolve, reject) => { fs.readFile('2.txt', 'UTF8', (err, result) => { if (err) { reject(err); return; } resolve(result); }); }); }; //第三个promise对象执行第三个文件的读取 let p3 = () => { return new Promise((resolve, reject) => { fs.readFile('3.txt', 'UTF8', (err, result) => { if (err) { reject(err); return; } resolve(result); }); }); }; //在外面拿到返回值结果,then每次返回一个promise对象所以可以链式调用 p1().then((resolve) => { console.log(resolve); return p2(); }).then((resolve) => { console.log(resolve); return p3(); }).then((resolve) => { console.log(resolve); });