第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求異步大神分析一下這段代碼的幾個callback分別代表什么意思

求異步大神分析一下這段代碼的幾個callback分別代表什么意思

看著頭暈,一個異步模塊開源項目的代碼,回調(diào)有點(diǎn)繞,都理不清各自的callback了,異步大神幫忙分析一下這段代碼。
查看完整描述

1 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊

const fs = require('fs')


const files = ['./file/1.js', './file/2.js', './file/3.js']


function series(tasks, callback) {

        // 1.參數(shù)有 callback 的話就取 callback 沒有就賦值一個空函數(shù)

    callback = callback || function() {}

    let results = Array.isArray(tasks) ? [] : {}


    eachOfSeries(tasks, function(task, key, callback) {

        task(function(err, data) {

            results[key] = data 

            // 調(diào)用eachOfSeries里面的 callback 把 err 作為參數(shù)

            callback(err)

        })

    }, function(err) { 

            // 調(diào)用1的上面callback 把 err,results 作為參數(shù)

        callback(err, results) 

    })

}



series([function(callback) {

    fs.access('./file/1.js', function(err) {

            // 數(shù)組第一個函數(shù)的參數(shù) callback

        callback(null, err ? false : true)

    });

}, function(callback) {

    fs.readFile('./file/2.js', function(err, data) {

            // 數(shù)組第二個函數(shù)的參數(shù) callback

        callback(err, data)

    });

}], function(err, results) {

    if (err) {

        throw err;

    }

    console.log(results);

});



function eachOfSeries(arr, fn, callback) {

        // 2.參數(shù)有 callback 的話就取 callback 沒有就賦值一個空函數(shù)

    callback = callback || function() {}

    arr = arr || []


    let i = -1

    let sync = true

    next()


    function next() {

        sync = true


        if (++i == arr.length) {

            return callback()

        }

        fn(arr[i], i, once(done))


        sync = false

    }


    function done(err) {

        if (err) {

                // 返回 第二個 callback

            return callback(err)

        }

        if (sync) {

            setImmediate(next)

        } else {

            next()

        }

    }


    function once(fn) {

        return function() {

            if (!fn) {

                return

            }

            fn.apply(this, arguments)

            fn = null

        }

    }

}


查看完整回答
反對 回復(fù) 2018-12-19
  • 1 回答
  • 0 關(guān)注
  • 589 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號