我仍在尝试了解什么是函数回调以及它是如何工作的。我知道它是 javascript 的重要组成部分。例如 node.js 文档中的 writeFile 这个方法,这个函数回调有什么作用?这个函数怎么能有输入err
?
fs.writeFile('message.txt', 'Hello Node', function (err) {
if (err) throw err;
console.log('It\'s saved!');
});
我仍在尝试了解什么是函数回调以及它是如何工作的。我知道它是 javascript 的重要组成部分。例如 node.js 文档中的 writeFile 这个方法,这个函数回调有什么作用?这个函数怎么能有输入err
?
fs.writeFile('message.txt', 'Hello Node', function (err) {
if (err) throw err;
console.log('It\'s saved!');
});
fs.writeFile
如果发生错误,将传递error
给您的回调函数。err
考虑这个例子
function wakeUpSnorlax(done) {
// simulate this operation taking a while
var delay = 2000;
setTimeout(function() {
// 50% chance for unsuccessful wakeup
if (Math.round(Math.random()) === 0) {
// callback with an error
return done(new Error("the snorlax did not wake up!"));
}
// callback without an error
done(null);
}, delay);
}
// reusable callback
function callback(err) {
if (err) {
console.log(err.message);
}
else {
console.log("the snorlax woke up!");
}
}
wakeUpSnorlax(callback);
wakeUpSnorlax(callback);
wakeUpSnorlax(callback);
2 秒后……
the snorlax did not wake up!
the snorlax did not wake up!
the snorlax woke up!
在上面的示例中,wakeUpSnorlax
就像fs.writeFile
在 fs.writeFile 完成时调用回调函数一样。如果fs.writeFile
在任何执行过程中检测到错误,它可以向Error
回调函数发送一个。如果它运行没有任何问题,它将调用回调而没有错误。