[解決済み] async/await構文で拒否する方法は?
2022-03-23 02:19:24
質問
が返すプロミスを拒否するにはどうすればよいですか?
async
await
機能ですか?
例)元々。
foo(id: string): Promise<A> {
return new Promise((resolve, reject) => {
someAsyncPromise().then((value)=>resolve(200)).catch((err)=>reject(400))
});
}
に翻訳します。
async
/
await
:
async foo(id: string): Promise<A> {
try{
await someAsyncPromise();
return 200;
} catch(error) {//here goes if someAsyncPromise() rejected}
return 400; //this will result in a resolved promise.
});
}
では、この場合、どうすればこの約束をきちんと拒否できるのでしょうか?
解決方法は?
最良の方法は
throw
アン
Error
が値をラップしているため、プロミスが拒否され、その結果
Error
を包む。
} catch (error) {
throw new Error(400);
}
また、単に
throw
を指定した場合、スタックトレース情報はありません。
} catch (error) {
throw 400;
}
あるいは、拒否されたプロミスを
Error
は値をラップしますが、イディオム的ではありません。
} catch (error) {
return Promise.reject(new Error(400));
}
(または単に
return Promise.reject(400);
しかし、この場合、コンテキスト情報がありません)。
あなたの場合
TypeScript
と
foo
の戻り値は
Promise<A>
ということであれば、これを使うことになります。
return Promise.reject<A>(400 /*or Error*/ );
の中に
async
/
await
のような状況で、最後はちょっと意味不明なマッチングかもしれませんが、うまくいきます。
を投げると
Error
を消費するものとうまく連携することができます。
foo
の結果を
await
の構文があります。
try {
await foo();
} catch (error) {
// Here, `error` would be an `Error` (with stack trace, etc.).
// Whereas if you used `throw 400`, it would just be `400`.
}
関連
-
[解決済み] エラー TS2322: タイプ 'Object[]' はタイプ '[Object]' に割り当てられません。
-
[解決済み] Typescript コンパイルエラー: error TS1109: 期待される式
-
ts 学習日記1 AssertionError [ERR_ASSERTION]: タスク関数を指定する必要があります
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] async/await関数を並列に呼び出す
-
[解決済み] async/await - タスクとvoidをいつ返すか?
-
[解決済み] 非同期関数+await+setTimeoutの組合せ
-
[解決済み] await/asyncを使用しているときにHttpClient.GetAsync(...)が返らない
-
[解決済み】WebStorm/PhpStormのダブルクォートでTypeScriptの自動インポートを行う。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み】tsconfigファイルにおけるesModuleInteropの理解
-
[解決済み] Angular 2の@ViewChildアノテーションがundefinedを返す
-
[解決済み] TypeScriptの円形型参照
-
[解決済み] 明示的なプロミス構築のアンチパターンとそれを回避する方法とは?
-
[解決済み] TypeScriptのオブジェクトリテラルでの型定義
-
[解決済み] 'unknown' vs. 'any'
-
[解決済み] noImplicitAnyフラグを有効にしてtypescriptをコンパイルすると、"Index signature of object type implicitly has an 'any' type "というエラーが発生しますが、どうすれば防ぐことができますか?
-
[解決済み】タイプからプロパティを除外する
-
[解決済み】throw Error('msg') vs throw new Error('msg')