Wait for request to finish Node.js

后端 未结 2 706
既然无缘
既然无缘 2021-01-02 11:41

I am currently having an issue with figuring out how to wait for the request to finish before returning any data. I do not believe I can do this with a Callback and I have n

2条回答
  •  一个人的身影
    2021-01-02 12:06

    You need to use callbacks. Change your API grabber to this:

    function getItems(amount, callback) {
    // some code... 
    request({
      url: url,
      json: true
    }, function (error, response, body) {
       // some code...
       if (!error && response.statusCode === 200) {
          // some code    
          callback(items); <-- pass items to the callback to "return" it
       }
    })
    }
    

    Then change the xml generator to also accept callbacks:

    function generateXML(callback){
    // Code to generate XML
    var API = require('./API');
    API.getItems("5",function(response){
      for(var i = 1; i <= response.length; i++)
      {
        // more code to generate further XML using the API response
      }
    
      // Finish generating and return the XML
      callback(xml_result); // <-- again, "return" the result via callback
    });
    }
    

    Then in your server code do:

    var xml = require('./XMLGenerator');
    response.writeHead(200, {'Content-Type': 'text/xml'});
    xml.generateXML(function(xmlstring){
        response.write(xmlstring);
        response.end();
    });
    

提交回复
热议问题