users.find({uname: this.uname, passwd: this.passwd}, (err, docs) => { if (docs.length === 0) { return true; } else { return false; } }); 如题 想在数据库中匹配帐号和密码 然后返回一个值 但是显然捕捉不到 能否捕捉到异步执行完后的值 或者 同步怎么写??
1 回答
Qyouu
TA贡献1786条经验 获得超11个赞
没搞明白为啥要捕捉异步执行完后的值,你把你需要用到这个执行结果的业务逻辑,放到
callback里面不久可以了么?Promise能不能帮到你呢?
const find = (uname, passwd) => new Promise((resolve, reject) => {
users.find({ uname, passwd }, (err, docs) => { if(err) return reject(err) if(docs.length === 0) return resolve(true)
resolve(false)
})
})
find(this.uname, this.passwd).then(result => { // 获取到异步执行完后的值的业务代码
console.log(result)
}).catch(err => console.error(err))async/await Promise的优雅版
const isExist = async (uname, passwd) => { try{ const result = await find({ uname, passwd }) // result is true of false
// 获取到异步执行后的代码的业务逻辑
} catch(e) {
console.error(e)
}
}Generator
EventEmitter
写不下去了,我还是没搞懂你为啥要捕捉异步执行完后的值,那我为啥还要回答呢,哎!!好吧!理解不对的话就忽略。
添加回答
举报
0/150
提交
取消
