一 回调地狱
//需求:我们需要一次读取 1.txt 2.txt 3.txt 文件 var fs = require(‘fs‘); fs.readFile(‘./1.txt‘,‘utf8‘,function (err,result) { //文件读取完成后会执行回调函数 console.log(result); fs.readFile(‘./2.txt‘,‘utf8‘,function (err,result) { console.log(result); fs.readFile(‘./3.txt‘,‘utf8‘,function (err,result) { console.log(result); }) }); });//回调嵌套层级太多 产生了回调地狱
二 Promise
1)概念
// promise [?prɑ?m?s] 许诺 承诺 的意思
// promise 的出现的目的 就是解决Node.js异步编程中回调地狱的问题
// Promise 是一个构造函数
// Promise 只是做了语法上的改进 没有任何新功能
2)基本语法
var fs = require(‘fs‘); var promise = new Promise(function (resolve, reject) { fs.readFile(‘./100.txt‘,‘utf8‘,function (err,result) { if (err != null) { reject(err); } else { resolve(result); } }); }); //resolve 就是 then方法里面的 回调函数 //reject 就是 catch方法里面的 回调函数 promise.then(function (result) { console.log(result); }).catch(function (err) { console.log(err); });
3)解决回调地狱
var fs = require(‘fs‘); function p1() { return new Promise(function (resolve, reject) { fs.readFile(‘./1.txt‘,‘utf8‘,function (err,result) { resolve(result); }) }); } function p2() { return new Promise(function (resolve, reject) { fs.readFile(‘./2.txt‘,‘utf8‘,function (err,result) { resolve(result); }) }); } function p3() { return new Promise(function (resolve, reject) { fs.readFile(‘./3.txt‘,‘utf8‘,function (err,result) { resolve(result); }) }); } p1().then(function (r1) { console.log(r1); return p2(); }).then(function (r2) { console.log(r2); return p3(); }).then(function (r3) { console.log(r3); }); //链式调用
三 异步函数
1)概念
//1 异步函数 是异步编程语法的终极解决方案
//2 可以让我们将异步代码写成同步的形式 让代码不再有回调嵌套 使的代码清晰明了
2)语法
// async 异步的意思 //在普通函数前面 加上async 就成了 异步函数
原文:https://www.cnblogs.com/fuyunlin/p/14553208.html