诚然,我是节点的新手,但看起来这应该可以正常工作。我正在使用多方解析一个表单,该表单返回一个数组。然后我使用 for each 来遍历数组。但是 - for each 不等待内部代码执行。不过,我有点困惑为什么它不是。
var return_GROBID = function(req, res, next) {
var form = new multiparty.Form();
var response_array = [];
form.parse(req, function(err, fields, files) {
files.PDFs.forEach(function (element, index, array) {
fs.readFile(element.path, function (err, data) {
var newPath = __dirname + "/../public/PDFs/" + element.originalFilename;
fs.writeFile(newPath, data, function (err) {
if(err) {
res.send(err);
}
GROBIDrequest.GROBID2js(newPath, function(response) {
response_array.push(response);
if (response_array.length == array.length) {
res.locals.body = response_array;
next();
}
});
});
});
});
});
}
如果有人能给我一些关于正确方法的见解,那就太好了。
编辑:谜团仍在继续。我在另一台机器上运行了这段代码,它工作正常。到底是怎么回事?为什么一台机器与另一台机器不一致?