To improve the code, the definition executeAsyncTaskshould be like this:
async function executeAsyncTask () {
try {
const res1 = await func1(a,b,c)
const res2 = await func2(a,b,c)
const res3 = await func3(a,b,c)
return [res1, res2, res3];
} catch (err) {
throw 'Promise Rejected';
}
}
As you can see, it uses tryand catcheven for error handling. In other words, if one of the awaitfunctions rejected, it catchautomatically fails.
func1(a, b, c) {
return new Promise((resolve, reject) => {
promise_API_CALL(params, function(data, err) {
if (err) {
console.error(err)
reject(err);
}
console.log(data);
resolve(data);
});
console.log("termined")
});
}
, , executeAsyncTask :
executeAsyncTask().then(function(result) {
console.log("result => " + result);
}).catch(function(error) {
console.log("error => " + error);
});
:
BONUS
, promises (func1, func2, func3) ( ), executeAsyncTask :
async function executeAsyncTask () {
try {
return [ res1, res2, res3 ] = await Promise.all([
func1(a,b,c),
func2(a,b,c),
func3(a,b,c)
])
} catch (err) {
throw 'Promise Rejected';
}
}