欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node?NPM庫promise?異步任務狀態(tài)管理

 更新時間:2023年07月24日 14:03:12   作者:脈沖云_梁興臣  
這篇文章主要介紹了node?NPM庫promise?異步任務狀態(tài)管理

NPM酷庫

每天兩分鐘,了解一個流行NPM庫。

JavaScript的優(yōu)勢就在于其基于異步事件模型,從而Node.js能夠擁有非常強大的性能表現(xiàn)。但是,JavaScript的callback方式做異步處理,多層級情況下對人而言簡直是噩夢,故而稱之為回調地域:

Model.count(filters, (error, count) => {
    if(error) {
        console.error(error);
    } else {
        Model.find(filters, (error, result) => {
            if(error) {
                console.error(error);
            } else {
                // ...
            }
        })
    }
})

上述代碼中,僅僅包含兩層回調,在實際開發(fā)中,經常會遇到處理涉及七八層回調的情況,可以想象多么恐怖,針對這種情況,產生了一系列的異步任務管理庫,Promise就是最常用的一個。

Promise

Promise 是一個劃時代的庫,因為Promise產生后,后續(xù)的ES7標準的async/await就是基于Promise的,而async/await機制讓人能夠以同步樣式的代碼處理異步任務,徹底解決了回調問題。

而Promise的機制其實很簡單,它將異步任務抽象為三種狀態(tài)Pending(進行中)、Fulfilled(完成)、Rejected(失敗)。

針對上文中的代碼,用Promise方式可以寫成:

Model.count(filters)
  .then((count)=>{
    return Model.find(filters);
  })
  .then((results)=>{
    // ...
  })
  .catch((error)=>{
    console.error(error)
  });

用Promise改寫后,原來的多層回調會被“拉扁”成1~2層,形成一個鏈狀調用。當然前提是上述的Model.find()Model.count()得支持Promise方式調用,如果不支持,我們可以將一個callback方式的函數(shù)轉換成Promise樣式:

function find(filters){
  return new Promise((resolve,reject)=>{
    Model.find(filters,(error,results)=>{
      if(error){
        reject(error);
      }else{
        resolve(results);
      }
    });
  });
}

上述代碼中find()函數(shù)返回了一個Promise對象,遺憾的是某些古老的瀏覽器沒有內置Promise對象,那么我們可以使用promise庫:

const Promise = require('promise');

參考資料

https://developer.mozilla.org...

https://github.com/then/promise

以上就是node NPM庫promise 異步任務狀態(tài)管理的詳細內容,更多關于node NPM庫promise 的資料請關注腳本之家其它相關文章!

相關文章

  • NodeJS有難度的面試題(能答對幾個)

    NodeJS有難度的面試題(能答對幾個)

    這篇文章主要介紹了NodeJS有難度的面試題(能答對幾個),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Node.js事件驅動

    Node.js事件驅動

    Node.Js是基于javascript語言,建構在google V8 engine以及Linux上的一個非阻塞事件驅動IO框架。這里主要不是介紹nodejs具體應用代碼,而是想介紹一下事件驅動編程。
    2015-06-06
  • 解決使用node命令提示:'node'不是內部或外部命令,也不是可運行的程序

    解決使用node命令提示:'node'不是內部或外部命令,也不是可運行的程序

    最近在工作中遇到了個常見的問題,分享給大家,這篇文章主要給大家介紹了關于如何解決使用node命令提示:'node'不是內部或外部命令,也不是可運行的程序的相關資料,需要的朋友可以參考下
    2023-02-02
  • nodejs express搭建服務并熱更新文件過程詳解

    nodejs express搭建服務并熱更新文件過程詳解

    這篇文章主要為大家介紹了nodejs express搭建服務并熱更新文件過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Node.js中Koa2在控制臺輸出請求日志的方法示例

    Node.js中Koa2在控制臺輸出請求日志的方法示例

    這篇文章主要給大家介紹了關于Node.js中Koa2在控制臺輸出請求日志的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Node.js具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • 手寫Node靜態(tài)資源服務器的實現(xiàn)方法

    手寫Node靜態(tài)資源服務器的實現(xiàn)方法

    這篇文章主要介紹了手寫Node靜態(tài)資源服務器的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 用node-webkit把web應用打包成桌面應用(windows環(huán)境)

    用node-webkit把web應用打包成桌面應用(windows環(huán)境)

    這篇文章主要介紹了windows環(huán)境下用node-webkit把web應用打包成桌面應用的教程,需要的朋友可以參考下
    2018-02-02
  • 解析Node.js基于模塊和包的代碼部署方式

    解析Node.js基于模塊和包的代碼部署方式

    這篇文章主要介紹了解析Node.js基于模塊和包的代碼部署方式,作為一個服務于本地操作系統(tǒng)的JavaScript解釋器,Node采用了簡潔的基于模塊和包概念的部署方式,需要的朋友可以參考下
    2016-02-02
  • Node.JS使用Sequelize操作MySQL的示例代碼

    Node.JS使用Sequelize操作MySQL的示例代碼

    Node.JS提供了操作數(shù)據庫的基礎接口,本篇文章主要介紹了Node.JS使用Sequelize操作MySQL的示例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-10-10
  • 阿里云OSS實踐文件直傳基于服務端

    阿里云OSS實踐文件直傳基于服務端

    這篇文章主要為大家介紹了阿里云OSS實踐文件直傳基于服務端實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論