如何在同步和异步代码的功能中拒绝承诺?

时间:2016-09-28 10:25:08

标签: javascript promise try-catch bluebird throw

在我的班级中,我得到了一个包含同步和异步代码的函数,如:

export class SomeClass(){
    constructor(){
    }

    foo(a: SomeDataClass): Promise<void>{
        if(!a){
            throw new Error('a is undefined');
        }

        return doSomething(a.value).then(()=>{
            console.log('done');
        }).catch((error)=>{
            throw error;
        });
    }
}

export class SomeDataClass(){
    public value: number;
    public name: string;

    constructor(){
    }
}

catch部分中抛出关注错误会提升catch函数用户的foo。但是第一次投掷(在if部分)不会,为了抓住这个,我必须在try / catch中使用foo

如果我将其丢弃在then部分内,我怎么能为返回的承诺引发错误? (不使用bluebird并拒绝Resolver

如果遗漏了某些内容,请告诉我。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

所以我发现reject上有一个Promise函数实际上正是我正在寻找的函数,它为它作为{{1}使用的函数引发了一个错误}错误,而不是像Promise中的常规throw一样。

返回此操作会导致在try/catch

中抛出错误
Promise.then