首先,这是我当前代码的一部分:
return new Promise(function(resolve, reject) {
for (var i = 1; i <= variables; i++) {
fs.writeFile("file-" + i + ".txt", dataString + ' ' + i + ' 0', "utf-8");
}
if (i == variables)
resolve('Files have been written');
else
reject('Some error occured');
})
我的问题是,在writeFile()
所有文件都是异步后,我不知道如何告诉我的承诺解决。我想要做的是在完全写入我的驱动器后,在我的下一个then()
中使用这些文件。有人可以帮帮我吗?我现在有点迷失了,也是node.js的新手,所以请耐心等待我:)
提前致谢!
#UPDATE 1:
var promises = [];
for (var i = 1; i <= variables; i++) {
promises.push(Promise.resolve(
new Promise(function(resolve, reject) {
fs.writeFile('file-' + i + '.cnf', dimacs2 + ' ' + i + ' 0', 'utf-8', function(err) {
if (err) {
reject(err);
}
else {
resolve();
}
});
}
)));
}
Promise.all(promises).then(function() {
// code that runs after files have been written
});
答案 0 :(得分:2)
也许你正在寻找这样的东西:
Promise.all(
variables.map(function (variable, i) {
return new Promise(function (resolve, reject) {
fs.writeFile("file-" + i + ".txt", dataString + ' ' + i + ' 0', "utf-8", function (err) {
if (err) {
reject(err);
} else {
resolve();
}
});
});
})
)
.then(function () {
// Files have been written
})
.catch(function (err) {
// Some errors occured
});