使用异步瀑布时,模型的响应未定义

时间:2018-05-10 18:14:22

标签: javascript node.js

我正在尝试将数据返回到我的视图模板。我正在使用async.waterfall来做这件事。只有一个问题,该课程的结果总是undefined

控制器:

Profile().then(response => {
    console.log(response);
});

模型:

module.exports = async function Profile() {
    let waterfall = await Async.waterfall([
        function(callback) {
            db.getOneWhere('users', 'username', global.req.params.username, ["username"]).then(result => {
                callback(null, result);
            });
        },
        function(arg1, callback) {
            db.getOneWhere('users', 'username', 'admin', ["username"]).then(result2 => {
                let ok = {
                    arg1,
                    result2
                }
                callback(null, ok);
            });
        }
    ], function (err, result) {
        let tmp = [];
        Object.keys(result).forEach(function(k) {
            tmp = [...tmp, ...result[k]];
        });

        return {'data': tmp};
    });

    return waterfall;
}

let waterfall始终为undefined,因此来自Profile.then()...的回复也未定义。为什么它不起作用,如何解决?

1 个答案:

答案 0 :(得分:2)

你可以将execute包装成Async.waterfall瀑布的回调,然后只做拒绝/解决承诺。创建的Promise将随瀑布结果一起解析,或者在发生错误时被拒绝。

Promise