nodejs 的q模块

本文介绍如何在 Node.js 中使用 Q 库来处理并发的接口请求,以便同时获取并返回多个接口数据。通过示例代码,展示了 Promise 的用法,提升接口调用效率。
摘要由CSDN通过智能技术生成

同时向前端返回多个接口参数

直接上代码

var Q = require('q');

//返回规格

function getGuige() {
  var deferred = Q.defer() ;

  DB.DB('guige',function (db,collection) {
    collection.find({}).sort({time: -1}).toArray(function(err, docs) {

  db.close();

  if(err){
    deferred.reject(err);
  }
  else{
    deferred.resolve(docs);
  }

});
  })

  return deferred.promise;
}

//返回发热量

function getfrl() {

  var deferred = Q.defer() ;

  DB.DB('fareliang',function (db,collection) {
    collection.find({}).sort({time: -1}).toArray(function(err, docs) {

      db.close();

      if(err){
        deferred.reject(err);
      }
      else{
        deferred.resolve(docs);
      }

    });
  })

  return deferred.promise;
}

//返回加工工艺

function getjggy() {
  var deferred = Q.defer() ;

  DB.DB('jiagonggy',function (db,collection) {
    collection.find({}).sort({time: -1}).toArray(function(err, docs) {

      db.close();

      if(err){
        deferred.reject(err);
      }
      else{
        deferred.resolve(docs);
      }

    });
  })

  return deferred.promise;
}

//返回硫份

function getliufen() {
  var deferred = Q.defer() ;

  DB.DB('liufen',function (db,collection) {
    collection.find({}).sort({time: -1}).toArray(function(err, docs) {

      db.close();

      if(err){
        deferred.reject(err);
      }
      else{
        deferred.resolve(docs);
      }

    });
  })

  return deferred.promise;
}



router.get('/good-lists', function(req, res) {

  var post = {};

//同时处理多个异步请求
  Q.all([getGuige(),getfrl(),getjggy(),getliufen()])

      .then(function (resp) {
        post.posts = [];
        post.frl = [];
        post.jggy = [];
        post.lf = [];

        for(var i = 0;i < resp[0].length;i++){
          post.posts.push({name:resp[0][i].name});
        }

        for(var j = 0;j < resp[1].length;j++){
          post.frl.push({name:resp[1][j].name});
        }
        for(var t = 0;t < resp[2].length;t++){
          post.jggy.push({name:resp[2][t].name});
        }
        for(var k = 0;k < resp[3].length;k++){
          post.lf.push({name:resp[3][k].name});
        }

        console.dir(post);

        res.render('good-lists', {
          title: '货源信息',
          posts: post
        });
      })
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值