2016-09-13 11 views
-2

私のアプリケーションはフロントエンド(角度js)とバックエンド(nodejs)で構成されています。私はリストに10個のIDを持っており、IDをサーバー(ノードjs)に渡してデータをフロントエンドに戻す必要があるたびに、これらのリストを反復したいと考えています。私はコンソールログから角コードが10回の呼び出しをすべて行っているのを見ることができましたが、ノードjsサーバーコードは最初の要求だけを処理しています。このための解決策はありますか?私はノードJの初心者です。ループ内のNodeJsサーバでサービスを呼び出せません

フロントエンドの角度のjsコード:

var getRMPDetails = function() 
{ 
    var inputJson; 
    for (var i = 0; i < $rootScope.rmps.list.length; i++) { 
     inputJson = {"input": { "rmp-uuid" : $rootScope.rmps.list[i]['id']}}; 
     rmpInventoryService.getRMPDetails(inputJson, function(data){ 
     console.log(data); 
    }); 
    } 
} 

above controller code calls below service method 

ris.getRMPDetails= function(input, successCbk){ 
       var uri = CONST.API_BASE + '/rpdDetails'; 
       PromiseHelper.postData(uri, input).then(function(data) { 
        successCbk(data); 
       }); 
      }; 

ノードjsのサーバコード:

Ctrl.prototype.getRMPDetails = function ($done, $input, rmpService, $logger) { 

    var topology = {}; 
    var input = $input.body; 
    console.log('method called'); =>> this is called only first RMP ID 
    rmpService.getRmpDetailsFromController(input, function(data){ 
     $done({"rmps" : data}); 
    });  
}; 

rmpService.getRmpDetailsFromController => it is a custom service in Nodejs server 
+0

ステップ1非同期について

rs.prototype.getRpmDetailsFromController = function(input, successCbk){ var rpmDetailsList = []; async.each(input, function(rmp, callback){ var rmpList={}; rmpList.rmp = rmp; var inputJson = {"input": { "rmp-uuid" : rmp['rmp-uuid'] } }; var deployReq = helper.createRequest('POST', inputJson, $config.controllerHostURL, null, function(data){ try { topology = JSON.parse(data); if(topology && topology['output']['status'] == 'success'){ rmpDetailsList.push(topology['output']); callback(); }else{ $logger.warn('ERROR :: from controller'); } } catch(e) { $logger.warn('ERROR :: ', e); } }, function(){ //error callback }); deployReq.send(); }, function(err) { if (err) { $logger.error('one of the api failed, the whole thing will fail now'); } else { successCbk(rpmDetailsList); } }); }; 

https://github.com/yongzhihuang/PentaCode/blob/master/AsyncJs/asyncEach.js

より。そうでない場合は、サーバーサイドのコードは関係がなく、ループを見る必要があります。 –

+0

はい角度はサービスを10回呼び出しています。 – Kiran

+0

私はちょっと混乱しています。あなたは角度コードを持っています、それは 'getRMPDetails'メソッドを呼び出しています。これは明らかにノードメソッドですか?それは意味をなさない。 1つはサーバーで実行され、もう1つはクライアントで実行されます。 –

答えて

0

私は、ノードの非同期モジュールを使用してソリューションを持っています。角度は、実際には最初のより詳しい情報を送信しているかどうかを把握:https://github.com/caolan/async

関連する問題