如何建立一个好的功能结构

时间:2017-03-09 10:44:25

标签: node.js asynchronous return-value

我正在使用Express,在某个地方我需要这样做

  1. 从一些带有发件人的API json获取
  2. 从带有接收器的API json获取
  3. 使用这两个页面呈现页面
  4. 所以我无法理解如何构建这个功能......我的意思是

    router.get('/', function (req, res, next) {
      res.render('nodes/index', {senders: helper.getServices(), receivers: helper.getReceivers()}
    

    我的功能看起来像

    this.getSenders = () => {    
        var options = { ... some opts }
        request(options)
          .then(function (body) {
            return body
          })
          .catch(function (err) {
            if (err) {
              console.log(err)
            }
          })
    }
    

    使用此结构页面渲染数据将从函数返回... 我应该如何组织我的代码以避免这种情况?

1 个答案:

答案 0 :(得分:0)

如果使用异步函数,则需要在呈现视图之前等待API的结果。如果使用async来处理这2个异步请求,它会更快

路由器

router.get('/', function (req, res, next) {

    async.parallel([
        function(callback) {helper.getServices(callback)},
        function(callback) {helper.getReceivers(callback)}
    ], function done(err, results){
        if(error){
            console.log(err);
            return;
        }
        res.render('nodes/index', {
            senders: results[0],
            receivers: results[1]
        })
     })
 })

功能:

this.getSenders = (callback) => {    
    var options = { ... some opts }
    return request(options)
      .then(function (body) {
          callback(null,body)
      })
      .catch(function (err) {
          callback(err, null)
      })
}