Javascript 等待的Nedb异步函数 异步函数计数(){ 设nedb= 让计数=0 等待迭代(nedb,{},g=>{ 计数++ }) console.log(计数) 迭代(xx,查询,回调){ 返回新承诺((res,rej)=>{ pkgs.find(query).exec((err,res)=>{ 如果(错误!==null){ 这个。错误(err) }否则{ res.forEach((pkg)=>{ 回调(pkg) }) } }) res() })
我想写一些东西,在迭代结束后,有没有办法以正常的方式完成它?您需要将Javascript 等待的Nedb异步函数 异步函数计数(){ 设nedb= 让计数=0 等待迭代(nedb,{},g=>{ 计数++ }) console.log(计数) 迭代(xx,查询,回调){ 返回新承诺((res,rej)=>{ pkgs.find(query).exec((err,res)=>{ 如果(错误!==null){ 这个。错误(err) }否则{ res.forEach((pkg)=>{ 回调(pkg) }) } }) res() }),javascript,nedb,Javascript,Nedb,我想写一些东西,在迭代结束后,有没有办法以正常的方式完成它?您需要将res()olve调用放在find回调中。立即履行undefined的承诺不会有帮助 但实际上,您根本不应该传递迭代回调 async function count() { let nedb = <<functional nedb database>> let count = 0 await iterate(nedb, {}, g=>{
res()
olve调用放在find
回调中。立即履行undefined
的承诺不会有帮助
但实际上,您根本不应该传递迭代回调
async function count() {
let nedb = <<functional nedb database>>
let count = 0
await iterate(nedb, {}, g=>{
count++
})
console.log(count)
iterate(xx, query, callback) {
return new Promise((res, rej)=> {
pkgs.find(query).exec((err, res)=>{
if(err!==null) {
this.err(err)
} else {
res.forEach((pkg)=>{
callback(pkg)
})
}
})
res()
})
我不想数到一。@m23你是什么意思?对于每个包,这仍然是递增的。
async function count() {
let nedb = …;
let count = 0;
const pkgs = await query(nedb, {});
pkgs.forEach(pkg => count++);
// or maybe better just:
const count = pkgs.length;
console.log(count);
}
function query(pkgs, query) {
return new Promise((resolve, reject)=> {
pkgs.find(query).exec((error, result)=>{
if (error !== null) reject(error);
else resolve(result);
});
});
}