Синхронный код
Я добавил функцию обратного вызова для модуля запроса и передаю результат следующим методом.
По умолчанию async.retry сделает 5 повторных попыток.
var fs = require("fs");
var request = require("request");
var async = require("async");
(async () => {
var url_1 = "https://google.com";
var url_2 = "https://library.harvard.edu/";
var file_path_1 = fs.createWriteStream("./intelcenter/aaa.bbb.ccc.txt");
var file_path_2 = fs.createWriteStream("./intelcenter/harvard.txt");
var res2 = await fetchData(url_2, file_path_2);
console.log("step one." + res2);
var res1 = await fetchData(url_1, file_path_1);
console.log("step two." + res1);
})();
function fetchData(url, locpath) {
console.log("inside fetchData");
return new Promise(function(resolve, reject) {
async.retry(
function(next) {
request(url, function(err, result) {
if (err) {
console.log(err);
}
console.log("inside request");
next(result);
}).pipe(locpath);
},
function(result) {
resolve(result);
}
);
});
}
Чтобы узнать больше о async .
Синхронный код без async.retry
var fs = require("fs");
var request = require("request");
(async () => {
var url_1 = "https://google.com";
var url_2 = "https://library.harvard.edu/";
var file_path_1 = fs.createWriteStream("./intelcenter/aaa.bbb.ccc.txt");
var file_path_2 = fs.createWriteStream("./intelcenter/harvard.txt");
var res2 = await fetchData(url_2, file_path_2);
console.log("step one.");
var res1 = await fetchData(url_1, file_path_1);
console.log("step two.");
})();
function fetchData(url, locpath) {
console.log("inside fetchData");
return new Promise(function(resolve, reject) {
request(url, function(err, result) {
if (err) {
console.log(err);
}
console.log("got result");
result=JSON.stringify(result);
locpath.write(result);
resolve(result);
});
});
}