1 Star 0 Fork 0

过尽飞鸿字字愁/PromiseDemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
05.使用Promise来解决回调地狱.js 1.90 KB
一键复制 编辑 原始数据 按行查看 历史
过尽飞鸿字字愁 提交于 2020-04-06 17:15 +08:00 . init my project
var fs = require('fs')
function getFileByPath(fpath){
return new Promise(
function(resolve,reject){
fs.readFile(fpath,'utf-8',(err,dataStr)=>{
// if(err) throw err
// 如果报错,进入if分支后,if后面的代码就没有必要执行了
// if(err) throw err
// console.log(dataStr)
if(err) return reject(err)
resolve(dataStr)
})
}
)
}
//先读取文件1,在读取2,最后读取3
//注意:通过 .then指定回调函数的时候,成功的回调函数,必须传,但是,失败的回调,可以省略不传
// 这是一个错误的示范,干万不要这么用;硬是把法拉利,开成了拖拉机
/* getFileByPath('./files/1.txt')
.then(function(dataStr){
console.log(dataStr)
getFileByPath('./files/2.txt')
.then(function(dataStr){
console.log(dataStr)
getFileByPath('./files/3.txt')
.then(function(dataStr){
console.log(dataStr)
})
})
}) */
//读取 文件 1
//在上一个 .then中,返回一个新的 promise实例,可以继续用下一个 .then来处理
//如果前面的 Promise执行失败,我们不想让后续的 Promise操作被终止,可以为每个 promise 指定失败的回调
getFileByPath('./files/111.txt')
.then(function(dataStr){
console.log(dataStr)
//读取 文件 2
return getFileByPath('./files/2.txt')
},function(err){
console.log('this is a failure result --->'+err.message)
/// return一个新的 Promise
return getFileByPath('./files/2.txt')
})
.then(function(data){
console.log(data)
//读取 文件 3
return getFileByPath('./files/3.txt')
})
.then(function(data){
console.log(data)
})
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cwflink/PromiseDemo.git
git@gitee.com:cwflink/PromiseDemo.git
cwflink
PromiseDemo
PromiseDemo
master

搜索帮助