我正在使用redis使用節點(node_redis模塊),並試圖包裝我的檢索代碼進行調試和幹,並無法理解爲什麼下面的函數不工作。異步功能不工作
我比JavaScript的基本異步有點新,所以我不認爲這與壞js以外的任何事情有關。
這工作正常,但其中包裝膜是很沒有意義的:
// wrapper
function asyncLoad(className, id, callback) {
redisClient.hget(className, id, callback);
}
// execution
asyncLoad('Person',1234,function(err,res) {
if (err) {
console.log(err);
} else {
var obj = JSON.parse(res);
console.log(obj);
}
});
我想如果我能做到這一點,將是調試和重複有用的,但我肯定做錯了什麼......
// wrapper
function asyncLoad2(className, id, callback) {
redisClient.hget(className, id, function(err,res,callback) {
console.log(callback);
if (err) {
console.log(err);
} else {
var obj = JSON.parse(res);
callback(obj);
}
});
}
// execution
asyncLoad2('Person',1234,function(obj) {
//simpler way to get back a parsed object with error handling already done
}
在此先感謝! PS - 我知道這真的是錯誤的處理;我不打算一直使用它,只是爲了選擇東西,特別是在調試過程中。
在您忘記了第一個片段'obj'前面的'var',在拼寫錯誤的第二個片段中'Parse'(應該小寫) – Bergi
正確,固定 - 發生在翻譯成片段時編輯。謝謝:) – tekunokurato