I am doing a set of async operations in following oder
I have written my code using promise as follows.
const readMzFile = (fileName, type) =>
new Promise((resolve, reject) =>
fs.readFile(fileName, type, (err, data) => {
return err ? reject(err) : resolve(data);
})
);
const createFolder = folderName =>
new Promise((resolve, reject) =>
fs.mkdir(folderName, function(err) {
return err ? reject(err) : resolve();
})
);
const writeMyFile = (filename, type) =>
new Promise((resolve, reject) =>
fs.writeFile(filename, type, function(err) {
return err ? reject(err) : resolve();
})
);
and I am using those promise functions as follows
readMyFile("xxx", "utf8")
.then(function(data) {
var generated = anotherFunc(package_data, data);
var dir = "/home/malintha/test";
createFolder(dir).then(function() {
writeMyFile("xxx", generated_source).then(function() {
console.log("File saved !!");
res.end();
});
});
})
.catch(error => console.log("Error: ", error));
Reading file and creating folder happen but final step - file writing is not done and seems like it stuck after folder creation.
What is the issue in this code?
At first glance, the promisified functions don't look bad (though maybe look into util.promisify()
so you don't need to do that by hand).
At the very least, you're not returning the promises correctly, so exceptions might be hidden.
How about something like this?
readMyFile("xxx", "utf8")
.then(function(data) {
var generated = anotherFunc(package_data, data);
var dir = "/home/malintha/test";
return createFolder(dir)
.then(() => writeMyFile("xxx", generated))
.then(() => {
console.log("File saved !!");
res.end();
});
})
.catch(error => console.log("Error: ", error));