2016-09-28 13 views
1

、のようなもの:同期コードと非同期コードの両方の機能で約束を拒否する方法は?私は同期と非同期コードの両方が含まれている機能を持って私のクラスで

catch部分にフォロー・エラーを投げる
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(){ 
    } 
} 

foo機能のユーザーのためのcatchを引き上げます。最初のスロー(セクション内)は、これを捕まえるためには試してみるとcatchの中でfooの使用をsurrounする必要があります。

thenセクション内にスローした場合、返された約束に対してエラーを発生させる方法はありますか? (bluebirdを使用せず、Resolverを拒否する)

何かが欠けている場合はお知らせください。

ご協力いただきありがとうございます。

答えて

1

だから私は実際に私が探していたまさにんPromisereject機能があるがわかってきた、それはそのPromiseエラーとして使用する機能のためにエラーが発生し、内部キャッチするために定期的にthrowが好きではありませんa try/catch

同じ我々は自己の答えを感謝し

foo(a: SomeDataClass): Promise<void>{ 
    if(!a){ 
     return Promise.reject('a is undefined'); //<----- Promise.reject 
    } 

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

Promise.thenチェーンでエラーを投げない、これを返します!なぜこのソリューションを選んだのか、却下された約束を返すことはどういう意味なのでしょうか? –

+0

完了、それがうまくカバーすることを願って:) –

関連する問題