使用promises时,我们是否应该在处理与错误参数相关的错误时使用throw或reject

时间:2014-10-08 16:15:23

标签: javascript promise q

我正在使用promise for async requests,我想知道什么是拒绝与无效参数相关的错误的最佳方法(也就是可以立即检测到的错误)。我目前只是抛出一个错误,就像我通常在同步函数中做的那样,但是想知道这是不好的做法,我应该使用promise的reject方法吗?

http://jsfiddle.net/7xv8f600/

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);
});

0 个答案:

没有答案