最終,我的知識如同幾小時前剛開始時那樣糟糕。但是,在我的頭上這應該工作:如何在不使用回調的情況下從Mongoose獲取數據?
getAll: function(callback){
User.find({}, function (err, data) {
if (err) return console.error(err);
return data;
});
}
var users = api.getAll();
console.log(users); //undefined
但由於某些原因,我必須把它作爲一個回調來獲取數據的工作,像這樣:
getAll: function(callback){
User.find({}, function (err, kittens) {
if (err) return console.error(err);
callback(kittens);
});
}
var users = api.getAll(function (data) {
console.info(data); //does output data
});
我怎樣才能選項之一,更容易閱讀2的工作?
貓鼬的'find'是異步的,因爲是任何需要callba CK。所以在賦值時'api.getAll()'沒有任何相關性。可讀性是相當主觀的。對我來說,正確使用承諾或者寫得很好的回調會更具可讀性。 – Tony
這將是一個很好的開始讓你的頭處理異步的地方:http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of -a-function-asynchron – JohnnyHK