-1

I want to make one more request with result.Reference[i].resourceId value.So please advise how to make second request within below code.

Example host will be

    var request = require('request');
var mongodb = require('mongodb');
var options = {
  url: 'http://host/xxxx/rest/domain/all',
  method:'GET'

};

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    var result = JSON.parse(body);

}

request(options, callback);


function count(error, response, body) {
  if (!error && response.statusCode == 200) {
    var result = JSON.parse(body);
    console.log(result);
  }
}
user2848031
  • 187
  • 12
  • 36
  • 69

1 Answers1

0

You can create a closure for i within for loop using an immediately invoked function expression; pass i to function call, pass required variable from result.Reference[i].resourceId to IIFE; create a separate function to handle callback for the calls to request made within for loop

function handleResponse(error, response, body) {
   if (!error && response.statusCode == 200) {
     // do stuff
   }
}

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    var result = JSON.parse(body);
    for(var i=0;i<result.Reference.length;i++) {
      (function(id) {
        request(id, handleResponse)
      // pass value from `result.Reference[i].resourceId` to IIFE here
      })(result.Reference[i].resourceId); 
    }
  }
}

request(options, callback);
guest271314
  • 1
  • 15
  • 104
  • 177
  • Thank you. But some change in the url itself. Please see question and advise. – user2848031 Dec 09 '16 at 04:12
  • Yes, you can use same pattern at Answer. Pass `calloptions` to IIFE within `for` loop, substitute `count` for `handleResponse` at call to `request()` within IIFE. – guest271314 Dec 09 '16 at 04:16