2016-05-22 11 views
0

私が見つけた最も近い問題はhereです。私は私の.end()呼び出しがどのように設定されているからこのエラーが出ていると思います。ソケットを私に残しNode.js - 送信後にヘッダーを送信できない

app.get('/anihome',function(req,res){ 

var context = {}; 

function renderPage(context) { 
    res.render('anihome',context); 
} 

function addRequestToPage(text) { 
    context.data = text.toString('utf8'); 
    context.info = JSON.parse(text); 
    return context; 
} 

function addAnimeToPage(text) { 
    context.anime = JSON.parse(text); 
    return context; 
} 

function addAnimeRequest(context) { 
    var options2 = { 
    host: 'anilist.co', 
    path: '/api/anime/20631?access_token=' + context.info.access_token, 
    method: 'GET' 
    }; 

    https.request(options2, function(restRes) { 
     restRes.on('data',function(jsonResult) { 
      //context.anime = JSON.parse(jsonResult); 
      //console.log(JSON.parse(jsonResult)); 
      console.log(context); 
      renderPage(context); 
     }); 
    }).end(); 
} 
function addHeaderRequest(context) { 
    var options = { 
    host: 'anilist.co', 
    path: '/api/auth/access_token?grant_type=client_credentials&client_id=' 
    + clientID + '&client_secret=' + secretKey, 
    method: 'POST' 
    };  

    https.request(options, function(restRes) { 
     restRes.on('data', function(jsonResult) { 
      context = addRequestToPage(jsonResult); 
      addAnimeRequest(context); 
     }); 
    }).end(); 
} 
addHeaderRequest(context); 
}); 

私は、コールバックで.end()秒のいずれかを設定する.end(addAnimeRequest(context));を試してみた、私のaddAnimeRequest機能では、そのおそらく何かをエラーをハングアップ:ここでは、で作業しているコードです時間がかかりすぎていますか?

異なるオプションを使用して同じウェブサイトに複数のリクエストを送信するより良い方法はありますか?私はNode.jsをかなり使い慣れています。

答えて

0

dataイベントを複数回送信することができます。 endイベントのリスナーを追加して、すべてのデータを渡す必要があります。例:

https.request(options2, function(restRes) { 
    var buf = '' 
    restRes.on('data',function(jsonResult) { 
     //context.anime = JSON.parse(jsonResult); 
     //console.log(JSON.parse(jsonResult)); 
     buf += jsonResult 
    }); 
    restRes.on('end', function() { 
     // TODO JSON.parse can throw 
     var context = JSON.parse(buf) 
     renderPage(context) 
    }) 
}).end(); 
関連する問題