大家能发现此代码隐藏的bug吗?
发布于 13 年前 作者 fengmk2 4737 次浏览 最后一次编辑是 8 年前
Foo.prototype.get = function(key, callback) {
  db.get(key, function(err, data) {
    if (err) return callback(err);
    try {
      callback(null, JSON.parse(data.toString()));
    } catch(e) {
      callback(e);
    }
  });
};
4 回复

代码不美观

callback(error)回调两次?

如果是callback里面出错了,会导致再次调用callback

try {
  callback(null, JSON.parse(data.toString()));
} catch(e) {
  callback(e);
}
如果try 中的callback执行出错,catch将执行。
try {
  data = JSON.parse(data.toString());
} catch(e) {
  return callback(e);
}
callback(null,data );
回到顶部