在 Node.js 7 中甩掉 Callback Hell

2021-03-02 Node地下鐵

在幾個月之前,V8 引擎就實現了對 async/await 關鍵字的支持,Node.js 7中的 V8 經過幾次更新,終於在上一個 night build 版本中加入對 async/await 的支持。

為了解決 callback hell(回調地獄),程式設計師們一直在努力,從最早的回調函數,到 Promise 對象,再到 Generator 函數,每次都有所改進,但又讓人覺得不徹底 —— 因為使用它們之前都需要理解抽象的底層運行機制。

異步編程的最高境界,就是根本不用關心它是不是異步, 所以 async/await 一直被譽為的 「殺手級解決方案」,讓你從回調地獄中解脫出來;

現在就可以在 Node.js 7 中使用該關鍵字了,步驟如下:

安裝 Node.js 7,可以使用 nvm 安裝;使用 async/await 寫一個簡單的示例使用 node --harmony-async-await app.js 啟動服務,注意因為還是試驗的功能,需要使用 --harmony-async-await 標誌位選項;

之前使用 Koa v2 搭建有該功能的 Web 服務,必須都要藉助諸如  Babel 這些編譯器,現在都可以去掉了,啟動的時候改用 node --harmony-async-await app.js 就可以;

:按照 Node.js 的發布流程,正式版將在 2017 年 4 月發布,在這之前 async/await 功能還是處於不穩定版本,切勿用在正式環境中

更多細節,請『閱讀原文』;

相關焦點

  • Express.js 作者棄用 Node.js,轉向 Go 語言
    今天 Express 的作者 TJ Holowaychuk 發了一篇文章,正式宣告和 Node.js 拜拜了,轉向 Go 語言
  • Node.js學習筆記第一天
    01-導入node模塊使用流程// node.js中將不同功能的代碼放在不同的js文件中,也叫模塊化,核心模塊會隨著安裝node.js時一併安裝// 1. fs.readFile('./123.txt', 'utf-8', (err, data) => {  // 沒有錯誤信息 err 為 null  // 如果有錯誤信息 if成立 執行 throw 程序終止並拋出異常  if (err) throw err;    // 代碼能執行到這裡說明沒有錯誤信息  // 就可以使用data參數來拿到從文件中讀取到的數據
  • Node.js原型鏈汙染的利用
    下面我們就開始結合ctf中的題目進行實際分析。0x02 搭建調試環境通常在ctf中原型鏈汙染的題目都會直接給出源碼,並且源碼通常都比較長,直接去看並不能很好的理解代碼,所以需要本地搭建一個環境來方便我們本地嘗試以及動態調試。這裡以Code-Breaking 2018的Thejs這一題為例。
  • Node.JS快速入門
    我們在命令提示符下輸入命令node demo1.js ,結果如下:2.2 使用函數我們剛才的例子非常簡單,咱們這裡再看一下函數的使用:我們在命令提示符下輸入命令node demo2.js ,結果如下:>2.3 模塊化編程創建demo3_1.js創建demo3_2.js2.4 創建web伺服器創建demo4.jshttp為node內置的
  • node.js、MongoDB下一代的LAMP
    node.js、MongoDB下一代的LAMP 我們大部分人在做網站時,都用的是LAMP,殊不知LAMP已成過去式,新一代的小生:nix、node.js、MongoDB誕生了,讓我們走進他們,知道他們的故事!
  • centos7編程實踐:安裝nodejs
    2、node.js的優勢2.1、Nodejs語法完全是js語法,只要你懂js基礎就可以學會Nodejs後端開發Node打破了過去JavaScript只能在瀏覽器中運行的局面。在Node.js伺服器中,運行的是高性能V8 JavaScript腳本語言,該語言是一種可以運行在伺服器端的腳本語言。那麼,什麼是V8 JavaScript腳本語言呢?該語言是一種被V8 JavaScript引擎所解析並執行的腳本語言。
  • Node.js模塊化你所需要知道的事
    我們知道在Node.js中,文件即模塊,剛剛提到了模塊可以是.js、.json或者.node文件,通過引用它們,可以獲取工具函數、變量、配置等等,但是它的具體結構是怎樣呢?', '/Users/samer/.node_libraries', '/usr/local/Cellar/node/7.7.1/lib/node' ]複製代碼ok,其實就是一堆系統絕對路徑,這些路徑表示了所有目標模塊可能出現的位置,並且它們是有序的,這意味著Node.js會按序查找paths中列出的所有路徑
  • 10 個最適合 Web 和 APP 開發的 NodeJS 框架
    Node.js Express 對於一個已經在使用 node.js 的開發人員來說,Express 或者」node.js express」並不是一個新鮮事。Express 框架提供了對 node.js 原生 API 的比較好的封裝,從而使開發者更加容易地使用node.js。 Express 框架提供了用來開發強壯的 web/移動應用,以及 API 的所有功能。
  • nodejs 中文分詞模塊 node-segment
    模塊以盤古分詞組件中的詞庫為基礎,算法設計也部分參考了盤古分詞組件中的算法。
  • Node.js 學習資料和教程(值得收藏)
    的buffer類利用libuv編寫異步多線程的addon實例Node.js中exports與module.exports的區別Node.js http 管道拒絕服務漏洞Node.js高級編程JS優化滬 JS 國內講師的 PPT 收集給Node.js新手的7條小建議  模塊導航web伺服器框架最流行的web框架Express
  • Node.js為何在後端開發中不受重視?
    Java無疑是所有後端開發語言中的佼佼者,它的生態完善度超乎你的想像,這也是Java在後端開發領域無法撼動的根本。其他幾種語言我覺得沒有根本性的區別,論生態完善度,都是半斤八兩,論高並發,golang當之無愧,論語言友好度,Node.js可以排到首位。
  • 把 Node.js 中的回調轉換為 Promise
    // 每日前端夜話 第431篇// 正文共:2300 字// 預計閱讀時間:7 分鐘介紹在幾年前,回調是 JavaScript 中實現執行異步代碼的唯一方法。回調本身幾乎沒有什麼問題,最值得注意的是「回調地獄」。
  • 把Node.js 中的回調轉換為 Promise
    JavaScript 將這些運行時間很長的任務轉移到瀏覽器或 Node.js 環境中的其他進程中。這樣它就不會阻止其他代碼的執行。通常異步函數會接受回調函數,所以完成之後可以處理其數據。舉個例子,我們將編寫一個回調函數,這個函數會在程序成功從硬碟讀取文件之後執行。
  • nodejs windows環境下搭建
    目前,Node.js是在前端開發中十分受歡迎,它是一套用來編寫高性能網絡伺服器的JavaScript工具包,官網中介紹:Node.js 是一個基於Chrome JavaScript 運行時建立的一個平臺, 用來方便地搭建快速的 易於擴展的網絡應用; Node.js 藉助事件驅動, 非阻塞I
  • 專門針對初學者的Node.js教程
    該案例中,我將「console.log('Hello World');」命令存入一個文件中,並將該文件作為node命令的參數。Node運行文件中JavaScript代碼,並輸出「Hello World」。
  • Node.js中的Stream
    我們既可以使用Node.js提供的流,比如,fs.createReadStream 就創建了讀取文件的輸入流,也可以創建自己的流。通常來說,都是先使用Node.js提供的流,那就使用fs模塊提供的輸入,輸出流。fs.createReadStream() 創建輸入流,輸入流負責讀取數據,所以它接受一個必須的參數,要讀取的數據。
  • 全程指導:Node JS實戰之製作塗鴉遊戲
    安裝node.js  首先,我們從nodejs.org下載node.js,這十分簡單,特別是在windows下,直接安裝installer的安裝包setup運行就可以了,如果在linux等其他作業系統上運行,可以在終端中運行一系列的命令,如下:  echo '
  • 前端頁面開發之Node JS初學者指南
    2010年年底,Node.js獲得雲計算服務商Joyent資助,創始人Ryan Dahl加入Joyent全職負責Node.js的發展。  2011年7月,Node.js在微軟的支持下發布Windows版本。
  • 在 Node.js 中使用 Promise.prototype.finally
    (點擊上方公眾號,可快速關注)英文: Valeri Karpov  譯文:眾成翻譯/AlekoLauzcfy.cc/article/using-promise-prototype-finally-in-node-js
  • 如何在Windows系統安裝最新版本的Node.js
    那麼,怎麼下載Node.js、卸載Node.js和安裝最新版本的Node.js?操作步驟:1、打開電腦瀏覽器,搜索Node.js;然後進入官網,下載15.5.0當前發布版本卸載Node.js5、點擊Node.js,彈出提示窗口,確定要卸載Node.js,單擊是