资讯专栏INFORMATION COLUMN

图表君碎碎念-- 填坑

goji / 340人阅读

摘要:,之前在介绍的时候图表君还是留了问题。下边说几句非技术的话题,技术的道路做久了,都会考虑到技术路线的问题,作为一个年轻人图表君并没有太多的经验,但是上周看到了池建强老师的一篇文章,说的挺好,在这里分享给大家。

大家周末好,天气这是越来越冷了,冬季到来了。西安冬日的传统雾霾又上演了,不过最近又限行了,希望能有点用处吧。好了今天不说什么新的东西,把之前的坑给填一填吧。

上篇文章的最后给大家留了一个问题,如果顺序的执行多个promise,已经有同学答对了,就是用链式调用。的确答案就是如此,那么具体一点怎么做链式调用呢?那么我们来看一个例子吧。

var guid = 0;
function run() {
  guid++;
  var id = guid;
  return new Promise(resolve => {
    setTimeout(function () {
      console.log(id);
      resolve(id);
    }, (Math.random() * 1.5 | 0) * 1000);
  });
}

var promises = Array.from({ length: 10 }, run);
Promise.all(promises)

上篇文章(上边的例子)中我们看到了 使用promise.all可以把几个promise组合起来使用,那么如果我们想让这些promise顺序执行改怎么办呢?来看答案。

var guid = 0;
function run() {
  guid++;
  var id = guid;
  return new Promise(resolve => {
    // resolve in a random amount of time
    setTimeout(function () {
      console.log(id);
      resolve(id);
    }, (Math.random() * 1.5 | 0) * 1000);
  });
}

var promises = Array.from({ length: 10 }).reduce(function (acc) {
  return acc.then(function (res) {
    console.log(res)
    return run().then(function (result) {
      res.push(result);
      return res;
    });
  });
}, Promise.resolve([]));

这里有点很有意思,我们先创建了一个创建一个长度为10的Array出来,然后呢,调用了其上的reduce方法,关键是这个reduce方法有意思了,传入的初始值是个resolved的promise,然后传入了一个function,其作用就是将这些promise都chain了起来。这样达到了顺序调用的目的,当然可以用其他写法达到目的,但是使用reduce还是有点意思的。大家有兴趣了可以自己来试试。

OK,之前在介绍DockerFile的时候图表君还是留了问题。下边的DockerFile其实定义的是有问题的。

    FROM node:4.6
     MAINTAINER Aaron Chen
 
     RUN mkdir /app
     WORKDIR /app
     COPY . /app
 
     RUN npm install
     
     EXPOSE 8080

那么问题在哪呢?问题就是这样的DockerFile我们就不能利用webpack-dev-server的hot reload的特性了。这对于开发阶段是相当大的效率影响的,那么如何解决呢,也是比较容易的,我们将代码做成一个volume挂到容器里就解决问题了。

下边说几句非技术的话题,技术的道路做久了,都会考虑到技术路线的问题,作为一个年轻人图表君并没有太多的经验,但是上周看到了池建强老师的一篇文章,说的挺好,在这里分享给大家。

技术发展(这里只谈我了解的软件)不外乎三条路:算法、底层和业务。能在一条路上精通,就很不错了。而厉害的人可以同时兼顾两条路。三条都牛的人,蛮罕见的。

技术1:算法路线


走算法路线,对智商的要求是高于其它路线的。但也不能说高到哪里去了。毕竟在企业里做算法工作,更多的是应用成熟算法,而不是自己设计算法。

算法路线比较适合耐得住寂寞的人,因为做算法常常是站在产品的幕后,好的结果又往往需要慢慢「熬」出来。算法往高走,对基础的要求就比较高了。不是博士出身,没在顶尖研究机构混过,在企业里也很难做出特别牛的成果。所以一般本科生不太建议走这个方向(当然,本科生也不用太难过,毕竟没退学生也做出过一些惊人的成就,池建强注)。

技术2:底层路线

底层路线,是围绕着操作系统、编译原理、分布式系统、数据库、软件工程这些理论,用各种工具搭建出酷酷的应用开发、运行环境。把各种复杂的工具跑起来,不仅和谐共处,还能发挥各自的长处,弥补各自的短处,并不是个简单工作。如果能再自己开发一些好用工具,就更不简单了。

极客、黑客范儿的人,是最适合走这条路线的。爱折腾,爱尝鲜,崇尚开源文化,细致缜密,是做好这一行的标签。

运维、DevOp、云计算、大数据、架构师,这些岗位或领域的人,多是能呼云唤雨的底层高手。


技术3:业务路线

大多数技术都是在业务线生存和创造价值的。如果论技术光环,这条线是比不过前两条的,容易产生「对技术能力要求不高」的感觉。从某些角度看,确实如此,但这条线也有自己独步天下的技术,那就是复杂业务建模能力。
修炼这项能力,除了技术的通用要求外,还需要比其它路线更强的沟通能力和抽象能力。或者说,对情商的要求最高。

适合自己的才是最好的,到底走那条路线是一个选择问题,做出自己的选择,并坚持的走下去。这可能是漫长和痛苦的过程。好了,唠唠叨叨了这么多,今天就写到这吧,我们下周见。

原创文章,欢迎转发,但请标明出处。欢迎关注图表君的公众号,一起成长。在微信中搜索 “多彩数据” 或者 “Data_Visualization”

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88016.html

相关文章

  • 小李飞刀:醉卧沙场莫笑,python你还是等等我

    摘要:前面的一些碎碎念两天的耽搁,思考了下,虽然需要全面基础的学习,但是重点还是应该放在实战上。更简洁的版本是如果文件很小,一次性读取最方便如果不能确定文件大小,反复调用比较保险如果是配置文件,调用最方便。 前面的一些碎碎念 两天的耽搁,思考了下,虽然需要全面基础的学习,但是重点还是应该放在实战上。所以后续要速速的推倒这个教程了,用一些数据来实行一些分析:) 认真学习的分割线 打打打打鸡血!...

    Hydrogen 评论0 收藏0
  • 前端碎碎 之 为什么[] == ![] ?

    摘要:判断步骤如下如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值转换为,而转换为。实际上是对比运用上面的顺序,是布尔值,所以转化为数值为。 『前端碎碎念』系列会记录我平时看书或者看文章遇到的问题,一般都是比较基础但是容易遗忘的知识点,你也可能会在面试中碰到。 我会查阅一些资料并可能加上自己的理解,来记录这些问题。更多文章请前往我的个人博客 类似标题中的问题还有很多,例如: 为...

    isaced 评论0 收藏0
  • 前端碎碎 之 [] + {} 和 {} + []一样吗?

    摘要:前端碎碎念系列会记录我平时看书或者看文章遇到的问题,一般都是比较基础但是容易遗忘的知识点,你也可能会在面试中碰到。当两个操作数都是数值时,执行常规的数值加法计算。关键还是要加深对中对数值转换的理解,以不变应万变。 『前端碎碎念』系列会记录我平时看书或者看文章遇到的问题,一般都是比较基础但是容易遗忘的知识点,你也可能会在面试中碰到。 我会查阅一些资料并可能加上自己的理解,来记录这些问题...

    Soarkey 评论0 收藏0
  • 无关紧要的碎碎

    摘要:在美国和一些其他发达国家,程序员已经从一个相对高端的行业变成越来越多普通人的日常。是五十个编辑推荐话题之一软件开发者是美国四个州最常见的职业图片来源我们不难设想,把软件开发的工作自动化掉,对相关企业来说将会是一个多么巨大的诱惑。 在美国和一些其他发达国家,程序员已经从一个相对高端的行业变成越来越多普通人的日常。 JavaScript 是 Medium 五十个编辑推荐话题之一: http...

    wangjuntytl 评论0 收藏0

发表评论

0条评论

goji

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<