const fs = require(‘fs‘);
// fs.readFile(‘./1.txt‘, ‘utf8‘, (err, restult1) => {
// console.log(restult1);
// fs.readFile(‘./2.txt‘, ‘utf8‘, (err, result2) => {
// console.log(result2);
// fs.readFile(‘./3.txt‘, ‘utf8‘, (err, result3) => {
// console.log(result3);
// })
// })
// });
function p1() {
return new Promise((resolve, reject) => {
fs.readFile(‘./1.txt‘, ‘utf8‘, (err, result) => {
resolve(result);
})
})
}
function p2() {
return new Promise((resolve, reject) => {
fs.readFile(‘./2.txt‘, ‘utf8‘, (err, result) => {
resolve(result);
})
})
}
function p3() {
return new Promise((resolve, reject) => {
fs.readFile(‘./3.txt‘, ‘utf8‘, (err, result) => {
resolve(result);
})
})
}
p1().then((r1) => {
console.log(r1);
return p2();
})
.then((r2) => {
console.log(r2);
return p3();
}).then((r3) => {
console.log(r3);
});
// 1 在普通函数定义的前面加上 async 关键字 普通函数就变成了异步函数
// 2 异步函数默认的返回值是 promise 对象
// await 关键字
// 1 它只能出现在异步函数中
// 2 await promise 它可以暂停异步函数的执行 等待 promise 对象返回结果后再向下执行
// async function fn() {
// throw ‘发生错误‘;
// return 123;
// }
// // console.log(fn());
// fn().then(function(data) {
// console.log(data); // 123
// }).catch(function(err) {
// console.log(err);
// })
async function p1() {
return ‘p1‘;
}
async function p2() {
return ‘p2‘;
}
async function p3() {
return ‘p3‘;
}
async function run() {
let r1 = await p1();
let r2 = await p2();
let r3 = await p3();
console.log(r1);
console.log(r2);
console.log(r3);
}
run();
const fs = require(‘fs‘);
// promisify 改造现在异步函数 api, 让其返回promise 对象,从而 支持异步函数语法
const promisify = require(‘util‘).promisify;
const readFile = promisify(fs.readFile);
async function run() {
let r1 = await readFile(‘./1.txt‘, ‘utf8‘);
let r2 = await readFile(‘./2.txt‘, ‘utf8‘);
let r3 = await readFile(‘./3.txt‘, ‘utf8‘);
console.log(r1);
console.log(r2);
console.log(r3);
}
run();