国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

NPM酷庫:promise 異步任務狀態管理

winterdawn / 1175人閱讀

摘要:是一個劃時代的庫,因為產生后,后續的標準的就是基于的,而機制讓人能夠以同步樣式的代碼處理異步任務,徹底解決了回調問題。而的機制其實很簡單,它將異步任務抽象為三種狀態進行中完成失敗。

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

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

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

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

Promise

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

而Promise的機制其實很簡單,它將異步任務抽象為三種狀態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方式的函數轉換成Promise樣式:

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

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

const Promise = require("promise");
參考資料

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

https://github.com/then/promise

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92851.html

相關文章

  • NPM酷庫:q 增強版Promise

    摘要:酷庫,每天兩分鐘,了解一個流行庫。是一個實現庫,并且相對于標準,提供了很多實用的工具函數。異步處理超時設置延時執行其他關于返回值的工具函數比如的作用是獲取返回對象的某個屬性,作用等同于這種函數有很多,具體可以查看文檔。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 昨天我們了解了如何使用Promise管理異步任務,但是ES2015標準的Promise對象實現的接口非常有限,只包含 P...

    worldligang 評論0 收藏0
  • NPM酷庫:async 強大的異步任務控制

    摘要:酷庫,每天兩分鐘,了解一個流行庫。庫是一個非常出色的異步控制庫,除了函數外,還提供了大量的其他工具函數,在當年沒有的時候,庫的作用尤為突出。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 今天要了解的庫叫async,與ES7標準的async/await關鍵字不同,這里說的async只是NPM的一個庫,為了區別,下文中今天的主角叫async庫,async/await的關鍵字叫async...

    xingpingz 評論0 收藏0
  • NPM酷庫:pify 將異步函數Promise

    摘要:酷庫,每天兩分鐘,了解一個流行庫。昨天我們了解到可以用庫將樣式庫轉化為樣式,同時庫也提供了強大在增強版的,如果我們需要轉化函數,且僅需要使用標準的,那么使用有些大材小用。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 所有Node.js標準庫和很多第三方庫提供的接口都是callback樣式的,在ES7標準時代,使用async/await配合Promise才是最佳實踐。 昨天我們了解到...

    ccj659 評論0 收藏0
  • NPM酷庫:bluebird Promise工具庫

    摘要:酷庫,每天兩分鐘,了解一個流行庫。昨天我們了解了增強版庫。庫實現了比標準更多的方法,今天我們繼續學習另一個功能強大的工具庫。首先,和庫一樣,也是一個增強版本的庫,可以直接后替換內置。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 昨天我們了解了增強版Promise庫:q。q庫實現了比ES2015標準更多的Promise方法,今天我們繼續學習另一個功能強大的Promise工具庫:blu...

    itvincent 評論0 收藏0
  • NPM酷庫:glob,通配符匹配文件名

    摘要:酷庫,每天兩分鐘,了解一個流行庫。經常,我們的程序需要對磁盤文件進行管理,就需要讀取磁盤上的文件列表,然后可能會需要判斷文件夾或文件名,還可能需要遞歸掃描子目錄。今天我們要了解的庫,就是專門用來掃描磁盤文件,并返回我們需要的文件類型。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 經常,我們的程序需要對磁盤文件進行管理,就需要讀取磁盤上的文件列表,然后可能會需要判斷文件夾或文件名,還...

    verano 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<