圖表君碎碎念-- 填坑

你們週末好,天氣這是愈來愈冷了,冬季到來了。西安冬日的傳統霧霾又上演了,不過最近又限行了,但願能有點用處吧。好了今天不說什麼新的東西,把以前的坑給填一填吧。node

上篇文章的最後給你們留了一個問題,若是順序的執行多個promise,已經有同窗答對了,就是用鏈式調用。的確答案就是如此,那麼具體一點怎麼作鏈式調用呢?那麼咱們來看一個例子吧。webpack

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順序執行改怎麼辦呢?來看答案。web

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<mail@aaronchen.cn>
 
     RUN mkdir /app
     WORKDIR /app
     COPY . /app
 
     RUN npm install
     
     EXPOSE 8080

那麼問題在哪呢?問題就是這樣的DockerFile咱們就不能利用webpack-dev-server的hot reload的特性了。這對於開發階段是至關大的效率影響的,那麼如何解決呢,也是比較容易的,咱們將代碼作成一個volume掛到容器裏就解決問題了。npm

下邊說幾句非技術的話題,技術的道路作久了,都會考慮到技術路線的問題,做爲一個年輕人圖表君並無太多的經驗,可是上週看到了池建強老師的一篇文章,說的挺好,在這裏分享給你們。promise

技術發展(這裏只談我瞭解的軟件)不外乎三條路:算法、底層和業務。能在一條路上精通,就很不錯了。而厲害的人能夠同時兼顧兩條路。三條都牛的人,蠻罕見的。微信

技術1:算法路線
架構

走算法路線,對智商的要求是高於其它路線的。但也不能說高到哪裏去了。畢竟在企業裏作算法工做,更多的是應用成熟算法,而不是本身設計算法。app

算法路線比較適合耐得住寂寞的人,由於作算法經常是站在產品的幕後,好的結果又每每須要慢慢「熬」出來。算法往高走,對基礎的要求就比較高了。不是博士出身,沒在頂尖研究機構混過,在企業裏也很難作出特別牛的成果。因此通常本科生不太建議走這個方向(固然,本科生也不用太難過,畢竟沒退學生也作出過一些驚人的成就,池建強注)。

技術2:底層路線

底層路線,是圍繞着操做系統、編譯原理、分佈式系統、數據庫、軟件工程這些理論,用各類工具搭建出酷酷的應用開發、運行環境。把各類複雜的工具跑起來,不只和諧共處,還能發揮各自的長處,彌補各自的短處,並非個簡單工做。若是能再本身開發一些好用工具,就更不簡單了。

極客、黑客範兒的人,是最適合走這條路線的。愛折騰,愛嚐鮮,崇尚開源文化,細緻縝密,是作好這一行的標籤。

運維、DevOp、雲計算、大數據、架構師,這些崗位或領域的人,可能是能呼雲喚雨的底層高手。


技術3:業務路線

大多數技術都是在業務線生存和創造價值的。若是論技術光環,這條線是比不過前兩條的,容易產生「對技術能力要求不高」的感受。從某些角度看,確實如此,但這條線也有本身獨步天下的技術,那就是複雜業務建模能力。
修煉這項能力,除了技術的通用要求外,還須要比其它路線更強的溝通能力和抽象能力。或者說,對情商的要求最高。

適合本身的纔是最好的,到底走那條路線是一個選擇問題,作出本身的選擇,並堅持的走下去。這多是漫長和痛苦的過程。好了,嘮嘮叨叨了這麼多,今天就寫到這吧,咱們下週見。


原創文章,歡迎轉發,但請標明出處。歡迎關注圖表君的公衆號,一塊兒成長。在微信中搜索 「多彩數據」 或者 「Data_Visualization」

相關文章
相關標籤/搜索