猿问

nodejs如何获得从异步回调的返回值?

    users.find({uname: this.uname, passwd: this.passwd}, (err, docs) => {

        if (docs.length === 0) {

            return true;

        } else {

            return false;

        }

    });

    

    如题 想在数据库中匹配帐号和密码 然后返回一个值

    但是显然捕捉不到 能否捕捉到异步执行完后的值

    或者 同步怎么写??


杨__羊羊
浏览 2980回答 1
1回答

Qyouu

没搞明白为啥要捕捉异步执行完后的值,你把你需要用到这个执行结果的业务逻辑,放到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)     }      }GeneratorEventEmitter写不下去了,我还是没搞懂你为啥要捕捉异步执行完后的值,那我为啥还要回答呢,哎!!好吧!理解不对的话就忽略。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答