I'm using promises for async requests, and I'm wondering what's the best way to reject errors relating to invalid arguments (aka errors which can be detected immediately). I currently simply throw an error like what I normally do in a synchronous function, but wondering if this is bad practice and should I use the reject method of the promise instead?
function doSomething(time) {
//option 1
if (typeof time !== 'number' || time <= 0) throw new Error('invalid argument');
var deferred = Q.defer();
setTimeout(function() {
deferred.resolve('yay');
}, time);
return deferred.promise;
};
doSomething('kappa').then(function(data) {
console.log(data);
});
function doSomething2(time) {
var deferred = Q.defer();
//option 2
if (typeof time !== 'number' || time <= 0) {
deferred.reject(new Error('invalid argument'));
} else {
setTimeout(function() {
deferred.resolve('yay');
}, time);
}
return deferred.promise;
};
doSomething2('kappa').then(function(data) {
console.log(data);
}, function(err) {
console.log(err);
});