我正在尝试在javascript中创建一个存储库类/函数,但由于回调,我无法从函数中返回值:
this.getAll = function(collection)
{
var result;
collection.find(function (err, objects) {
if (err) return console.error(err);
console.log(objects);
var result = objects;
});
return result;
}
var result = repo.getAll(Kitten);
console.log(result);
但首先调用此处的结果,稍后调用回调。做我想做的事情是个好主意吗?或者我应该将回调函数传入存储库?
答案 0 :(得分:2)
我使用回调。它认为它是NodeJS功能。您也可以使用promises而不是回调。
您可以创建存储库的方法,如:
function getAll(collection, cb){
collection.find(function (err, objects) {
cb(err, objects);
});
}
getAll(Kitten, function(err, objects){
console.log(objects);
});
答案 1 :(得分:0)
您应该学习如何使用回调。如果您不喜欢它创建的语法,则可以使用promises。 JavaScript和NodeJS中的回调是基础。但是要避免圣诞树效果,请将代码重构为函数和方法。我还建议您查看异步模块,特别是async.series和async.parallel。
您可以查看the following blog,其中突出显示了有关nodejs的一些有效要点。