使用promise解决回调地狱_使用Promise 解决回调地狱
const fs = require('fs')
function getFileByPath(fpath) {
return new Promise(function (resolve, reject) {
fs.readFile(fpath, 'utf-8', (err, dataStr) => {
if (err) return reject(err)
resolve(dataStr)
})
})
}
// 先读取文件1,在读取2,最后读取3
// 注意: 通过 .then 指定 回调函数的时候,成功的 回调函数,必须传,但是,失败的回调,可以省略不传
// 这是一个 错误的示范,千万不要这么用; 硬是把 法拉利,开成了 拖拉机;
/* getFileByPath('./files/1.txt')
.then(function (data) {
console.log(data)
getFileByPath('./files/2.txt')
.then(function (data) {
console.log(data)
getFileByPath('./files/3.txt')
.then(function (data) {
console.log(data)
})
})
}) */
// 读取文件1
// 在上一个 .then 中,返回一个新的 promise 实例,可以继续用下一个 .then 来处理
// 如果 ,前面的 Promise 执行失败,我们不想让后续的Promise 操作被终止,可以为 每个 promise 指定 失败的回调
/* getFileByPath('./files/11.txt')
.then(function (data) {
console.log(data)
// 读取文件2
return getFileByPath('./files/2.txt')
}, function (err) {
console.log('这是失败的结果:' + err.message)
// return 一个 新的 Promise
return getFileByPath('./files/2.txt')
})
.then(function (data) {
console.log(data)
return getFileByPath('./files/3.txt')
})
.then(function (data) {
console.log(data)
}).then(function (data) {
console.log(data)
}) */
// console.log('OKOKOK')
// 当 我们有这样的需求: 哪怕前面的 Promise 执行失败了,但是,不要影响后续 promise 的正常执行,此时,我们可以单独为 每个 promise,通过 .then 指定一下失败的回调;
// 有时候,我们有这样的需求,个上面的需求刚好相反:如果 后续的Promise 执行,依赖于 前面 Promise 执行的结果,如果前面的失败了,则后面的就没有继续执行下去的意义了,此时,我们想要实现,一旦有报错,则立即终止所有 Promise的执行;
getFileByPath('./files/1.txt')
.then(function (data) {
console.log(data)
// 读取文件2
return getFileByPath('./files/22.txt')
})
.then(function (data) {
console.log(data)
return getFileByPath('./files/3.txt')
})
.then(function (data) {
console.log(data)
})
.catch(function (err) { // catch 的作用: 如果前面有任何的 Promise 执行失败,则立即终止所有 promise 的执行,并 马上进入 catch 去处理 Promise中 抛出的异常;
console.log('这是自己的处理方式:' + err.message)
})
使用promise解决回调地狱_使用Promise 解决回调地狱相关推荐
- mysql回调地狱_浅谈JS回调地狱
前言: 回调地狱称之为callback hell 主体: (1)分析 由图分析可知,内部的异步请求依赖于上一个内部请求的结果 (2)编写案例 本节内容主要涉及 异步编程 1.简单回调案例 2.node ...
- java 回调模式_总结!!!总结!!!java回调以及future模式
总是忘记,我这里直接写实际的东西,看其他的博客都是类图,文字描述,这里直接用代码描述. 疑问:什么是回调 回调,回调.要先有调用,才有调用者和被调用者之间的回调.所以在百度百科中是这样的: 软件模块之 ...
- Java回调网址_极光短信- 回调接口 - 极光文档
回调接口 设置并校验回调地址: 回调消息格式说明: 测试回调功能的方法: 设置回调地址 功能说明 设置并校验回调地址 操作路径 Step1:登入控制台 Step2:进入应用模版 Step3:右侧菜单中 ...
- java中钩子函数回调函数_钩子函数和回调函数
一般认为,钩子函数就是回调函数的一种,其实还是有差异的,差异地方就是:触发的时机不同. 先说钩子函数: 钩子(Hook)概念源于Windows的消息处理机制,通过设置钩子,应用程序对所有消息事件进行拦 ...
- 异步回调地狱_如何逃避异步/等待地狱
异步回调地狱 async/await freed us from callback hell, but people have started abusing it - leading to the ...
- 机器学习解决什么问题_机器学习帮助解决水危机
机器学习解决什么问题 According to Water.org and Lifewater International, out of 57 million people in Tanzania, ...
- java中钩子函数回调函数_钩子函数 和回调函数
标签: http://blog.csdn.net/lipeionline/article/details/6369657 转自 也可以这样,更容易理解:回调函数就好像是一个中断处理函数,系统在符合你 ...
- java解决线程死锁_为你解决Java线程死锁
产生死锁的原因: 1. 系统资源不足.分配不当.系统中都会有一种不可剥夺的资源,若是这些资源不能够满足进程运行的需要,那么就只能进行资源争夺,从而陷入死锁. 注意:只有对不可剥夺资源的竞争才可能产生死 ...
- Promise使用,return的运用,解决回调地狱
Promise使用,return的运用,解决回调地狱 回调地狱 httpBookModel.getHotList().then((res) => {console.log(res)httpBoo ...
最新文章
- 采用JNI方法利用opengl es 1.x在android上绘图
- xcode代码没颜色的解决方案
- 高德地图JavaScript API开发研究
- scrapy爬取动态网页_scrapy_splash 设置随机请求头
- [译]不要在UI主线程中进行耗时的操作
- Python操作MySQL的封装类
- 隐藏文件或文件夹属性无法修改解决方案
- 怎样在vrep child scirpt里定义自己写的函数
- 通过mapreduce把mysql的数据读取到hdfs
- HTML5基础知识习题 一
- word应用2(实用)
- libjpeg、libpng使用方法
- 图像辨识系统神经网络图,图像识别技术神经网络
- 直线方程和直线系方程
- 会员等级图标js脚本
- 简单说 通过CSS的滤镜 实现 火焰效果
- 提高网站转化率——页面停留时间与网站停留时间
- fstream用法总结 C++
- Android的识花软件推荐,形色、苗叔、花伴侣三大主流识花软件全面评测
- SAP中质量订单未维护结算规则导致月结报错的分析解决案例
热门文章
- java编写创建数据库和表的程序
- 难道我的事,又要落空么。。。
- C/C++隐式类型转换导致的若干问题
- svn里ignore不需要提交的用户文档
- 超级usb万能启动盘
- Android 禁止更换桌面,Android中如何禁用其他应用,并且不在桌面显示
- 腐蚀rust研究台抽奖_延迟焦化装置的腐蚀风险分析
- 怎样对流媒体进行压力测试_暖气片怎样安装效果好?暖气片正确的安装,采暖效果更好!...
- java中方法不调用会执行_java[新手]类里的方法没有调用为什么实现了?
- angularjs全栈开发知乎_为什么你要去尝试全栈开发?