Reputation: 3270
function process () {
return new Promise((resolve, reject) => {
//make sure module exists
let module = modules[queueData.module];
if (!module) reject('module not found: '+queueData.module);
//make sure processor exists
let processor = fileProcessors[module.type];
if (!processor) reject('processor not found: '+module.type);
return anotherPromiseFunction();
})
}
processFile().catch(e => console.error)
anotherPromiseFunction() returns a promise. normally inside a .then() I can return a promise to make the then() wait for that promise to finish, but how do I do it when creating a promise?
Am I supposed to do this:
anotherPromiseFunction()
.then(e=>resolve(e))
.catch(e=>reject(e))
That seems wrong...
Upvotes: 1
Views: 78
Reputation: 27217
You likely do not need the new Promise
. The cases for "module exists" and "processor exists" can be handled separately, and then you can just return the call to anotherPromiseFunction
after them:
//make sure module exists
let module = modules[queueData.module];
if (!module) {
return Promise.reject(new Error('module not found: '+queueData.module));
}
//make sure processor exists
let processor = fileProcessors[module.type];
if (!processor) {
return Promise.reject(new Error('processor not found: '+module.type));
}
return anotherPromiseFunction();
If the enclosing function is an async function, you can just throw the errors instead:
async function run() {
//make sure module exists
let module = modules[queueData.module];
if (!module) {
throw new Error('module not found: '+queueData.module);
}
//make sure processor exists
let processor = fileProcessors[module.type];
if (!processor) {
throw new Error('processor not found: '+module.type);
}
return anotherPromiseFunction();
}
Upvotes: 2