<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • 詳解ES6系列之異步處理實戰(zhàn)-創(chuàng)新互聯(lián)

            前言

            成都創(chuàng)新互聯(lián)公司專注于夾江網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供夾江營銷型網(wǎng)站建設(shè),夾江網(wǎng)站制作、夾江網(wǎng)頁設(shè)計、夾江網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造夾江網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供夾江網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

            我們以查找指定目錄下的大文件為例,感受從

            回調(diào)函數(shù) -> Promise -> Generator -> Async

            異步處理方式的改變。

            API 介紹


            為了實現(xiàn)這個功能,我們需要用到幾個 Nodejs 的 API,所以我們來簡單介紹一下。

            fs.readdir
            readdir 方法用于讀取目錄,返回一個包含文件和目錄的數(shù)組。

            fs.stat
            stat 方法的參數(shù)是一個文件或目錄,它產(chǎn)生一個對象,該對象包含了該文件或目錄的具體信息。此外,該對象還有一個 isFile() 方法可以判斷正在處理的到底是一個文件,還是一個目錄。

            思路分析


            我們基本的實現(xiàn)思路就是:

            • 用 fs.readdir 獲取指定目錄的內(nèi)容信息
            • 循環(huán)遍歷內(nèi)容信息,使用 fs.stat 獲取該文件或者目錄的具體信息
            • 將具體信息儲存起來
            • 當(dāng)全部儲存起來后,篩選其中的是文件的信息
            • 遍歷比較,找出大文件
            • 獲取并返回大文件

            然后我們直接上代碼吧。

            回調(diào)函數(shù)


            var fs = require('fs');
            var path = require('path');
            
            function findLargest(dir, cb) {
              // 讀取目錄下的所有文件
              fs.readdir(dir, function(er, files) {
                if (er) return cb(er);
            
                var counter = files.length;
                var errored = false;
                var stats = [];
            
                files.forEach(function(file, index) {
                  // 讀取文件信息
                  fs.stat(path.join(dir, file), function(er, stat) {
            
                    if (errored) return;
            
                    if (er) {
                      errored = true;
                      return cb(er);
                    }
            
                    stats[index] = stat;
            
                    // 事先算好有多少個文件,讀完 1 個文件信息,計數(shù)減 1,當(dāng)為 0 時,說明讀取完畢,此時執(zhí)行最終的比較操作
                    if (--counter == 0) {
            
                      var largest = stats
                        .filter(function(stat) { return stat.isFile() })
                        .reduce(function(prev, next) {
                          if (prev.size > next.size) return prev
                          return next
                        })
            
                      cb(null, files[stats.indexOf(largest)])
                    }
                  })
                })
              })
            }
            
            

            文章標(biāo)題:詳解ES6系列之異步處理實戰(zhàn)-創(chuàng)新互聯(lián)
            標(biāo)題路徑:http://www.jbt999.com/article2/dsoooc.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、品牌網(wǎng)站設(shè)計網(wǎng)站導(dǎo)航、網(wǎng)頁設(shè)計公司全網(wǎng)營銷推廣、網(wǎng)站制作

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

            成都網(wǎng)站建設(shè)公司

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 男女一级黄片 | 青娱乐免费偷拍视频播放 | 亚洲精品一二三四区 | 国产高清无码在线视频 | 蜜桃丰满熟妇av无码区不卡 |