JS |从子函数中获取 return
JS | Get return from sub Function
我需要获取子函数的return。
所以我有以下代码并且需要父函数中 doc
的结果,另外我想 return 一个数组所以我需要复制数组因为父数组将是子进程关闭后删除?
感谢您的宝贵时间!
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?
})
}
尝试:
const test = ()=>{
const HereINeedTheArray = []
db.allDocs({include_docs: true, descending: true}, function(err, doc) {
HereINeedTheArray.push(doc)
return HereINeedTheArray
})
}
您的函数对数据库执行异步调用,因此您无法 return 以同步方式获得结果。您必须在回调中处理 returned 值:
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 if you are on node.js >= 7.6 or have 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
}