node.js - requêtes multiples mongodb, comment faire écho à la page une fois que toutes les requêtes sont exécutées.
迷茫
迷茫 2017-05-02 09:26:15
0
1
637
router.get('/test.node', function(req, res, next) {
    //定义回显的msg
    var msg = {
        stats: 1,
        err: [],
        main: {},
        mark: ''
    };
    //查询数据1
    var paywayList = [];
    //查询数据2
    var tradeList = [];
    //查询数据3
    var rechargeList = [];
    //查询数据4
    var tradeSum = {};
    
    //每查询一次调用一次okCountFunc()
    //查询数据1
    bossService.getPaywayListByMerchant(merchantId, branchId, function(items) {
        paywayList = items;
        okCountFunc();
    });
    //查询数据2
    bossService.getPaysumListByMerchant(merchantId, branchId, params.startDate, params.endDate, function(items) {
        tradeList = items;
        okCountFunc();
    });

    //查询数据3
    bossService.getVippaysumListByMerchant(merchantId, branchId, params.startDate, params.endDate, function(items, objs) {
        rechargeList = objs;
        okCountFunc();
    });
    //查询数据4
    bossService.getDaysumListByMerchant(merchantId, branchId, params.startDate, params.endDate, function(list, sum) {
        tradeSum = sum;
        okCountFunc();
    });
    
    //统计计数
    var okCount = 0;
    var okCountFunc = function() {
        okCount++;
        if (okCount == 4) { //到这里查询已全部结束
            //最后合并该统计数据
            msg.main.paywayList = paywayList;
            msg.main.tradeList = tradeList;
            msg.main.rechargeList = rechargeList;
            msg.main.tradeSum = tradeSum;
            res.send(msg);
        }
    }
});
  • Existe-t-il un moyen plus pratique de revenir à la page une fois que toutes les requêtes sont exécutées ?

  • promis ? Y a-t-il une démo.

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
phpcn_u1582
var msg = {
   stats: 1,
   err: [],
   main: {},
   mark: ''
};
const task1 = new Promise((resolve, reject) => {
    bossService.getPaywayListByMerchant(merchantId, branchId, (items) => {
        msg.main.paywayList = items;
        return resolve();
    });
});

const task2 = ...

Promise.all([task1, task2, ...]).then(() => {
    res.send(msg);
});
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal