调用内部包含Promise的Async函数,返回未定义

时间:2018-08-20 20:46:47

标签: javascript node.js firebase promise async-await

我正在尝试执行某些功能,具体取决于我从app.rutine中的数据库中获取的内容:

donotmatchME!
apple2000@
Gpa1
abc01A

如图所示尝试将函数的返回推入counts Array

但是我不断收到Promise {}或Promise {undefined}

这是setRutine异步函数:

return Promise.all(finalApps.map(app => {
       return counts.push(setRutine(**app.rutine**));
}))

这是countUsers()函数,如果它从数据库中获取的信息是countUsers会返回一个承诺

async function setRutine(nameF) {
    if(nameF == "countUsers") {
        console.log("YES; IT IS");
        await countUsers().then((count) => {
            console.log("FROM IF STATEMENT: " + count);
            return count;
        })
    } else {
      return "";
    }
}

谢谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您必须从setRutine返回一些信息,可能是诺言的结果:

 return await countUsers() /*...*/

答案 1 :(得分:0)

感谢您的所有回答,大家都为我提供了一些帮助,以便更好地理解我的问题,而道格·史蒂文森(Doug Stevenson)是对的,我将setRutine函数更改为返回Promise而不是异步函数。

我发布代码:

function setRutine(nameF) {
    return new Promise( (resolve, reject) => {
        if(nameF == "countUsers") {
            return countUsers().then((count) => {
                resolve(count);
            }).catch((error) => {
                reject(error);
            })
        }
    });
}