Node.js -使用http.get循环遍历要保存在本地的JSON文件列表
Node.js - loop through JSON list of files to save locally using http.get
我有一个JSON文件,其中包含服务器上的文件名列表。我需要遍历这个列表并在本地保存每个文件。我在一定程度上做到了这一点。有时它像魔法一样有效,有时则不然,最后我的文件是空的。
我知道这可能是开始下载下一个文件之前,以前已经完成,但我正在努力重写这个,以便我得到一个回调时,文件完成,开始下载下一个。我不是经验丰富的客户端编码,所以会很感激一些帮助与此。
var filefolder = 'http://www.example.com/files/';
var newdir = nw.App.dataPath;
$.each(jsonFiles, function(i, fn) {
//read and download to save locally
var filelink = filefolder + '/' + fn;
var newfile = fs.createWriteStream(newdir+'/files/' + '/' + fn);
var request = http.get(filelink, function(response) {
response.pipe(newfile );
console.log(fn);
newfile.on('finish', function() {
newfile.close(cb);
});
});
});
因为你的下载代码在each
循环内,而http.get
是异步的,你必须用闭包来包装调用。
像这样,
var filefolder = 'http://www.example.com/files/';
var newdir = nw.App.dataPath;
$.each(jsonFiles, function(i, fn) {
//read and download to save locally
var filelink = filefolder + '/' + fn;
var newfile = fs.createWriteStream(newdir + '/files/' + '/' + fn);
(function(filelink, newfile, fn, cb) {
var request = http.get(filelink, function(response) {
response.pipe(newfile);
console.log(fn);
newfile.on('finish', function() {
newfile.close(cb);
});
});
})(filelink, newfile, fn, cb)
});
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 如何获取 JSON 数组下存在的相应值
- JavaScript 在 JSON 对象中移动如何判断元素是否存在
- 如何获取数据属性中存在的现有JSON并更新它
- JSON.parse中存在无效字符
- 如果JSON解析对象不存在,如何避免脚本损坏
- 检查 jQuery 中是否存在 JSON 中的值
- 使用 AngularJS 将数据保存在 JSON 本地存储中
- 检查 SessionStorage JavaScript 中是否存在 JSON 对象
- AngularJS,将数据保存在json中并进行检索,从而允许angular重建动态表
- 仅firefox中存在JSON语法错误
- 如何使用angularjs或jquery将每个点击的按钮操作保存在json文件/对象中
- 更新shape并将新值保存在json中
- 将变量保存在JSON文件中
- 从HTML元素中获取数据并将其保存在json中
- javascript:检查数组中是否存在JSON对象
- 使用Ajax修改数据并将其保存在JSON文件中
- 如何使用JavaScript / Jquery将数据保存在JSON文件中
- 如何在不调用任何服务或后端的情况下将提交的表单值保存在 json 中