1

我仍在尝试了解什么是函数回调以及它是如何工作的。我知道它是 javascript 的重要组成部分。例如 node.js 文档中的 writeFile 这个方法,这个函数回调有什么作用?这个函数怎么能有输入err

fs.writeFile('message.txt', 'Hello Node', function (err) {
  if (err) throw err;
console.log('It\'s saved!');
});
4

1 回答 1

10

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回调函数发送一个。如果它运行没有任何问题,它将调用回调而没有错误。

于 2013-08-30T01:32:49.977 回答