异步承诺不返回结果

时间:2017-06-17 14:05:03

标签: javascript node.js promise

在承诺结算后,我的res怎么没有得到价值?

我的console.log看起来像这样:

=====!!USER NOT FOUND!!=====
Res: undefined

这是我的功能

async function findUser(userID, userType) {
    await new Promise((resolve, reject) => {
    usersTable.findOne (
        { _id: userID }
    ,function (err, data) {
        if (err) {
            throw new Error('findUser: ' + err);
        } else {
            if (!data) {
                console.log("=====!!USER NOT FOUND!!=====")
                resolve("NEW");
            } else {
                console.log("=====USER FOUND=====")
                resolve("OK");
            };
        };
    });
})};

这是我的来电者

async function main() {
    var res = "";
    try { 

        // Find the user
        res = await findUser(userEmail, "tenant");
        console.log("Res: " + res );
        if (res == "NEW") {
            res = await newUser();                  // Add the new tenant
        }
    }
    catch(err) {
        console.error(err);
        console.log(" newBooking: " + err);
        callback( { error:true, err } );
    }
}
main();

1 个答案:

答案 0 :(得分:1)

查找用户应该返回某事:

async function findUser(userID, userType) {
   return await new Promise((resolve, reject) => {
   ...
   });
}

如果你等待findUser()你等待异步函数返回sth。您的异步函数返回undefined。

顺便说一句:您可能根本不使用异步功能:

function findUser(userId,userType){
  return new Promise(...);
}