#javascript #nedb
#javascript #nedb
Вопрос:
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()
})
Я хотел бы что-нибудь написать после завершения итерации, есть ли способ сделать это каким-нибудь обычным способом?
Ответ №1:
Вам нужно поместить res()
вызов olve внутрь find
обратного вызова. Немедленное выполнение обещания undefined
не поможет.
Но вам вообще не следует передавать обратный вызов итерации. Вместо этого напишите
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);
});
});
}
Комментарии:
1. Я не хочу считать до одного.
2. @m23 что вы имеете в виду? Это все еще увеличивается для каждого пакета.