function foo(options) {
if(!isValid(options)) {
// I want to return a resolved promise here to permit client code to continue without a failure
}
return promisifiedThirdPartyApi(options); // Does not handle an invalid options object successfully
}
How can I idiomatically return a resolved promise in the "invalid" case?
Native Promises
Take a look at the native Promise object's static methods resolve
and reject
.
function foo(options) {
if(!isValid(options)) {
return Promise.resolve();
}
return promisifiedThirdPartyApi(options);
}
Angular $q
Use $q.when
to return a resolved Promise from some non-Promise object:
function foo(options) {
if(!isValid(options)) {
return $q.when([]);
}
return promisifiedThirdPartyApi(options);
}
Q Promises
Use Q.resolve()
which returns a resolved promise.
function foo(options) {
if(!isValid(options)) {
return Q.resolve();
}
return promisifiedThirdPartyApi(options);
}
function foo(options) {
return new Promise(function(accept, reject) {
if(!isValid(options)) {
reject();
}
promisifiedThirdPartyApi(options).then(function() {
accept();
});
});
}
Note that Q might have some shortcuts for this...