es6中的Promise的使用

在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

猜你喜欢

转载自blog.csdn.net/hc2018/article/details/83903548