我试图在Node中解析XML到JSON。我使用的是xml2js。我想将Lodash合并到循环遍历数组中的每个数字,并使用相应的url将XML转换为JSON。当我使用下面的代码时,出现clang -Wall -Wextra -c main.c
clang -Wall -Wextra -c weird.c
clang -o program main.o weird.o
错误。知道我做错了吗?
Non-whitespace before first tag
答案 0 :(得分:0)
老实说,LoDash中的forEach
助手有点傻。 forEach
是任何Array
实例的原型方法。一个问题是这些功能助手不是为处理异步流量控制而设计的。
虽然有十几种处理流量控制的方法,但最简单的方法可能是使用caolan/async
模块的map()
方法。
你的代码看起来像是:
var no = [78787878,78787879, 787878780];
async.map(no, function(cb) {
https.get('https://tsdrapi.uspto.gov/ts/cd/casestatus/'+no+'/info.xml', function (res) {
var response_data = '';
res.on('data', function (chunk) {
response_data += chunk;
});
res.on('end', function () {
parser.parseString(response_data, function (err, result) {
if (err) {
cb(err);
} else {
cb(null, result);
}
});
});
res.on('error', cb);
})
}, function(err, results) {
if(err) {
console.log("Error occured: ", err);
}
else {
console.log("Results(array): ", results);
}
});
这里的区别在于异步将数组映射到具有回调的函数。这样,您可以将每个请求的响应收集到一个数组中,并在每个请求响应时触发回调。如果其中一个错误消失,则进程停止并触发记录错误的最终回调(或者您可以编写逻辑来处理另一种方式)。