存储来自多个回调node.js javascript的数据

时间:2016-03-21 05:45:13

标签: javascript node.js callback

我使用knexjs ORM从postgresql数据库中检索数据。有没有办法可以更清晰地存储来自多个数据库请求的数据?目前我这样做:

knex('user').where({
    approved: true
}).then(function(data) {
    context.approved = data;
    knex('user').where({
        unapproved: true
    }).then(function(data) {
        context.unapproved = data;
        console.log(context); //this is my main objective
    }).catch(function(error) {
        console.log('error: ' + error);
    });
}).catch(function(error) {
    console.log('error: ' + error);
});

如果我需要提出更多请求,这很容易变得非常混乱。理想情况下,我想做类似的事情:

function a(callback) {

    knex('user').where({
        approved: true
    }).then(function(data) {
        //store this data somehow
    }).catch(function(error) {
        console.log('error: ' + error);
    });
};

function b(callback) {

    knex('user').where({
        unapproved: true
    }).then(function(data) {
        //storethis data somehow
    }).catch(function(error) {
        console.log('error: ' + error);
    });
};

function c(a, b) {
    //do an operation with the data returned from functions a and b
}

但是,我并不是100%确定如何实现这一点。有人可以帮忙吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我想你想看看承诺。在您的情况下,您可以使用Promise.all()异步执行所有数据调用。

type

文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all