2017-03-09 5 views
0

良い機能構造を作り、そしてどこかに私が行う必要がありますする方法この私はExpressを使用してい

  1. は、受信機と、いくつかのAPIのJSONから取得した送信者といくつかのAPIのJSONから取得
  2. だから私はRLYこの機能を構築する方法を理解カントそれらの両方

でページをレンダリングする...私は

router.get('/', function (req, res, next) { 
    res.render('nodes/index', {senders: helper.getServices(), receivers: helper.getReceivers()} 
0を意味します

そして、私の機能のデータが関数から返される前にレンダリングし、この構造のページで

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

のように見える... は、どのように私はこれを避けるために、自分のコードを整理する必要がありますか?

答えて

0

非同期関数を使用する場合は、レンダリングビューを表示する前にAPIからの結果を待つ必要があります。

this.getSenders = (callback) => {  
    var options = { ... some opts } 
    return request(options) 
     .then(function (body) { 
      callback(null,body) 
     }) 
     .catch(function (err) { 
      callback(err, null) 
     }) 
} 
:それはあなたがそれらの2つの非同期に処理するための asyncを使用する場合

ルータ

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

機能を要求速くなります

関連する問題