求异步大神分析一下这段代码的几个callback分别代表什么意思
看着头晕,一个异步模块开源项目的代码,回调有点绕,都理不清各自的callback了,异步大神帮忙分析一下这段代码。
const fs = require('fs')
const files = ['./file/1.js', './file/2.js', './file/3.js']
function series(tasks, callback) {
callback = callback || function() {}
let results = Array.isArray(tasks) ? [] : {}
eachOfSeries(tasks, function(task, key, callback) {
task(function(err, data) {
results[key] = data
callback(err)
})
}, function(err) {
callback(err, results)
})
}
series([function(callback) {
fs.access('./file/1.js', function(err) {
callback(null, err ? false : true)
});
}, function(callback) {
fs.readFile('./file/2.js', function(err, data) {
callback(err, data)
});
}], function(err, results) {
if (err) {
throw err;
}
console.log(results);
});
function eachOfSeries(arr, fn, callback) {
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) {
return callback(err)
}
if (sync) {
setImmediate(next)
} else {
next()
}
}
function once(fn) {
return function() {
if (!fn) {
return
}
fn.apply(this, arguments)
fn = null
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果你有个比较好用的编辑器,通过重命名重构很容易就能把关系理清楚,下面的代码是用 VSCode 重命名的