# Expose API with Promises and Optional Callback Feature
The API pattern below allows users to use it as a promise or as a callback-based API (if an optional callback argument is passed in):
function asyncFn(arg1, arg2, callback) {
return new Promise(function(resolve, reject) {
// When error occurs
if(someError) {
const err = new Error('Invalid input')
if(callback) {
callback(err)
}
return reject(err)
}
// No error
if(callback) {
callback(null, result);
}
resolve(result);
})
}
Some notes:
- The async API checks presence of callback function before calling it
- A promise is always created and completed regardless if users opt for the callback option.
Posted on: Mon, 04 Mar 2019 09:11:09 GMT