与http Node.js异步

时间:2015-01-12 19:23:00

标签: javascript node.js http asynchronous

我有两个异步函数给我一些网址,其他一个给我从网址我需要的内容和一个将我需要的内容写入文件,但它首先写入文件,然后它给我内容我需要写,在获得我需要的内容后,如何让他写入文件。感谢

var http = require('http');
var fs = require('fs');

var list = {};
var k = 0;

function getContent(url){
  var options = {
    host: 'www.exammple.org',
    path: url
  }
  var request = http.request(options, function (res) {
    var data = '';
    res.on('data', function (chunk) {
      data += chunk;
    });
    res.on('end', function () {
      list[k] = data;
      k++;
    });
  });
  request.on('error', function (e) {
    console.log(e.message);
  });
  request.end();
}
var options = {
  host: 'www.example2.org',
  path: '/mypath'
}
var request = http.request(options, function (res) {
  var data = '';
  res.on('data', function (chunk) {
    data += chunk;
  });
  res.on('end', function () {
      ///Here I get some urls from data
      data = data.split(";");
      for(key in data){
        data = data.split('href=\"')[1].split('"')[0];
        getContent(data[key]);
      }
      writeToFile();
    }
  });
});
request.on('error', function (e) {
  console.log(e.message);
});
function writeToFile(){
  fs.writeFile("file.txt", JSON.stringify(list), function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log("The file was saved");
    }
  });
}
request.end();

0 个答案:

没有答案