2017-03-09 68 views
0

我用快遞,在某處,我需要做到這一點如何使一個很好的功能結構

  1. 從發件人一些API JSON
  2. 從接收機一些API JSON得到得到
  3. 渲染頁面與他們兩個

所以我RLY無法理解如何構建這個功能...我的意思是

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) 
     } 
     }) 
} 

採用這種結構的頁面呈現之前將數據從函數返回... 應該如何組織我的代碼,以避免這種情況?

回答

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) 
     }) 
}