在es6中新增了一个Promise
主要是解决了回调地狱的问题(函数里面一层一层的调用,像18层地狱,哈哈哈),导致结构不清晰
Promise是一个构造函数 需要new出来 return 返回实例出去才能通过.then拿到参数,
Promise 是执行的异步,所以比同步代码慢
const fs = require('fs')
function getPromise(fPath){
var promise = new Promise(function(resolve,reject){
fs.readFile(fPath,'utf-8',(err,dataStr)=>{
if(err) reject(err.message)
resolve(dataStr)
})
})
return promise
}
getPromise('./files/1.txt')
.then(function(data){
console.log(data);
return getPromise('./files/2.txt')
})
.then(function(data){
console.log(data);
return getPromise('./files/3.txt')
})
.then(function(data){
console.log(data);
})
.catch(function(err){ // catch的作用 如果前面的任何Promise执行失败 则立即终止所有的Promise的执行 并调用catch
console.log(err);
})
console.log('我是的同步的');
输出的结果 : (按顺序输出了)
读取三个文件 按顺序读取 执行完前面的 .then 才会执行后面的 .then 保证了代码的依次顺序
Promise的出现实际并未让代码量减少 可能还会多一点点代码 但是却会让结构更加清晰
…end