我试图通过遵循this guide来了解NodeJS中的异步回调,并且我在下面的代码片段中对callback()
的位置有疑问。回调在异步函数中的位置的影响
var fs = require('fs')
var myNumber = undefined
function addOne(callback) {
fs.readFile('number.txt', function doneReading(err, fileContents) {
myNumber = parseInt(fileContents)
myNumber++
callback()
})
}
function logMyNumber() {
console.log(myNumber)
}
addOne(logMyNumber)
在这里,我的文件'number.txt'
包含数字1和整个代码段的输出是2
。读取文件后,这似乎是调用callback()
,并且输出是预期的。然而,fs.readFile()
之外移动callback()
,但如下所示addOne()
内部已混淆我输出现在undefined
。
var fs = require('fs')
var myNumber = undefined
function addOne(callback) {
fs.readFile('number.txt', function doneReading(err, fileContents) {
myNumber = parseInt(fileContents)
myNumber++
})
callback()
}
function logMyNumber() {
console.log(myNumber)
}
addOne(logMyNumber)
这是否意味着在第二个例子,是callback()
之前fs.readFile()
已完成引用?