我需要返回一个子函数。
所以我有以下代码并且在Parent函数中需要doc
的结果,另外我想返回一个数组,所以我需要复制数组,因为父数组将在子进程之后被删除被关闭了?
感谢您的时间!
function test(){
var HereINeedTheArray []
db.allDocs({include_docs: true, descending: true}, function(err, doc) {
HereINeedTheArray = doc
return doc //can i get this return or do i need HereINeedTheArray?
})
}
答案 0 :(得分:0)
尝试:
const test = ()=>{
const HereINeedTheArray = []
db.allDocs({include_docs: true, descending: true}, function(err, doc) {
HereINeedTheArray.push(doc)
return HereINeedTheArray
})
}
答案 1 :(得分:0)
您的函数对数据库执行异步调用,因此您无法以同步方式返回结果。您必须处理回调中的返回值:
function test(){
var HereINeedTheArray []
db.allDocs({include_docs: true, descending: true}, function(err, doc) {
// logic to handle doc here
})
}
或者你可以Promisify你的职能:
function test(){
return new Promise(function(resolve, reject) {
db.allDocs({include_docs: true, descending: true}, function(err, doc) {
if (err)
reject(err);
resolve(doc);
});
});
}
test.then(function(doc) {
// handle doc here
})
.catch(function(err) {
// handle error
});
或者,如果您在async/await> = 7.6或拥有node.js,则可以使用Babel transpiling with ES2017:
function _test(){
return new Promise(function(resolve, reject) {
db.allDocs({include_docs: true, descending: true}, function(err, doc) {
if (err)
reject(err);
resolve(doc);
});
});
}
async function test() {
let doc = await _test();
// handle doc here
}