前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Promise.all在统计WebHDFS时的使用

Promise.all在统计WebHDFS时的使用

作者头像
杨肆月
发布2019-08-15 18:54:17
1.4K0
发布2019-08-15 18:54:17
举报
文章被收录于专栏:全栈开发之路

流程:

1、一天里按时间(精确到小时)来请求WebHDFS(数据类型是JSON)

利用Promise异步请求

2、将上面所有Promise异步请求包装成数据,投入到Promise.all中

遇到问题: Promise.all 只会在所有传给他的 Promise 都 resolve 了之后才会 resolve,如果其中的一个 reject 了,那么 Promise.all 后面的 then 就不会被执行,catch 会被执行 这样的话,一旦某个小时的日志请求失败了(reject),那么.then里的操作就没法执行了,如何让 Promise.all 坦然面对失败呢? 解决方案: Promise.all(promises.map(p => p.catch(() => undefined))); 参考https://zhuanlan.zhihu.com/p/26920718

3、对请求到的日志里的数据,分析、截取、分割操作 1)把结果导入数据库(按项目名、日期、项目id、死链、日志原始链接) 2)拼成html邮件格式(table) 3)整个项目部署到Linux上,设定crontab定时任务,每天发送

我Promise.all的认识

比如你是银行前台,专门给别人办理各种银行业务。有一天有100个人来找你办业务,你有两种选择: 同步操作:让这100个人排好队,一个办完再办下一个。 但这存在一个问题,有的人的业务简单,几分钟搞定,有的人业务复杂,也许还要和沟通上级,耗时几小时都不一定。 所以这样做,你一天都办不完100个人的业务。 异步操作:把写好标号的100张便利贴发给这100个人,让他们再返还给你,你根据便签上写的业务,异步来办理,最后把办理好的结果,按序号排好,给办理人

Promise.all就是你,Promise.all里的任务列表[asyncTask(1),asyncTask(2),asyncTask(3)],是按顺序发起的,由于它们都是异步的,互相之间并不阻塞,每个任务完成时机是不确定的。尽管如此,所有任务结束之后,它们的结果仍然是按顺序地映射到resultList里,这样就能和Promise.all里的任务列表[asyncTask(1),asyncTask(2),asyncTask(3)]一一对应起来

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.08.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我Promise.all的认识
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档