我試圖通過遵循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()
已完成引用?