First of all, here is a part of my current code:
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');
})
My problem is that I don't know how to tell my promise to resolve after all files have been written as writeFile() is async. What I want to do is to use these files in my next then() when they are completely written to my drive. Can anybody help me out here? I'm kind of lost right now and also new to node.js so please bear with me :)
Thanks in advance!
#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
});
Maybe you're looking for something like this:
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
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With