【发布时间】:2013-01-08 08:47:34
【问题描述】:
我了解对于 I/O 操作(即数据库查询、Web 请求和磁盘访问),您必须使用这样的回调
fs = require('fs')
fs.readFile('test.txt', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
console.log(data);
});
但是说如果你有这样的同步代码
function Player(name){
this.name = name;
this.score = 0;
}
Player.prototype.calcScore = function(){
//some special code here to calculate the score
this.score =+ 10;
}
var player = new Player("Sam");
player.calcScore();
console.log(player);
或者你需要像下面这样的回调风格来编写它,其中 calcScore 方法可能只包括一个 for 循环和一个 if 语句并且不查询数据库等。
function Player(name){
this.name = name;
this.score = 0;
}
Player.prototype.setScore = function(data){
this.score = data
}
Player.prototype.calcScore = function(callback){
//some special code here to calculate the score
var newscore = this.score += 10;
callback(null, newscore);
}
var player = new Player("Sam");
player.calcScore(function(err, data){
if(err){
return console.log(err);
}
player.setScore(data);
console.log(player);
});
我想我有点困惑,何时使用异步代码或同步代码。提前感谢您的帮助。
【问题讨论】:
标签: javascript node.js asynchronous callback