【发布时间】:2013-11-08 20:03:37
【问题描述】:
我知道这已经被问过一百万次了,但我真的试图分解异步 Javascript 函数和回调,而它只是没有点击。我正在查看 Max Ogden 的节点艺术示例,它是这样的:
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)
分解一下,我知道当调用 addOne 时,它首先启动 fs.ReadFile,这可能需要一些时间才能完成。
我不明白的是,代码不会继续callback() 并执行logMyNumber(在添加myNumber 之前)吗?是什么阻止了callback() 在它应该运行之前运行,这就是重点?或者callback() 不会在doneReading 发生之前发生?我们是否应该假设doneReading 将在fs.readFile“完成”时被调用?
感谢大家耐心帮助我解决这个非常常见的问题:)
【问题讨论】:
-
callback()被doneReading调用,它本身就是一个回调。依赖分号插入的嘘声。 -
@Adam 虽然它实际上并没有说在读取文件时调用该函数,不是吗?
-
@JarrodRoberson 所以它暗示了这一点,但就个人而言,我不会认为它特别明确。当某人发脾气时,直言不讳实际上是有帮助的。
-
我认为文档的问题比示例的问题要小。我碰巧需要一个明确的提醒
doneReading是回调。我凭经验知道它一定是回调。有道理?我想每个人的学习方式都不一样。
标签: javascript node.js callback