所以我有这个工作的PouchDB查询,它将结果输出到控制台:
getActiveProjects();
function getActiveProjects() {
function map_allActivePrj(doc) {emit(doc.projectStatus);}
db.query(map_allActivePrj, {
key : '1',
include_docs : true
}).then(function (result) {
// handle result
console.log(JSON.stringify(result.rows, null, 4));
}).catch(function (err) {
// handle errors
});
}
现在我想从另一个函数调用此函数并返回结果。我无法做到这一点。我知道结果在查询范围内。
投入"返回"在" db.query"前面如果我用以下内容打印出来,则返回一个空对象:
console.log(JSON.stringify(getActiveProjects()));
我不确定这个功能是否是一个好主意。我是否应该在" //处理结果"中编写代码?部?
答案 0 :(得分:2)
您无法从异步函数返回同步值。相反,您可以使用回调:
function getActiveProjects(cb) {
...
}).then(function(result) {
// do stuff
cb(result);
}).catch(...
}
getActiveProjects(function(result) {
console.log(JSON.stringify(result));
});
或者返回一个promise并使用它来检索值:
function getActiveProjects() {
...
return db.query(map_allActivePrj, {
key: '1',
include_docs: true
}).then(function(result) {
// do stuff
return Promise.resolve(result);
}).catch( ...
}
getActiveProjects().then(function(result) {
console.log(JSON.stringify(result));
});