私はJSONPlaceholder APIを使用しています:https://jsonplaceholder.typicode.com。私は私のservice.ts
に次のようにありますAsync/Awaitキャッチエラー処理を試す
component.ts
に使用しよう
public async getPosts(): Promise<Post[]> {
try {
const response = await this._http.get<Post[]>(this._baseUrl + "api/JsonPlaceholder/GetPosts");
return response.toPromise();
} catch (error) {
await this.handleError(error);
}
}
:
public posts: Post[];
public async ngOnInit() {
const posts = await this._placeholderService.getPosts();
this.posts = posts;
}
をしかし、活字体のコンパイラはpublic async getPosts(): Promise<Post[]>
にエラーがスローされます - Function lacks ending return statement and return type does not include 'undefined'.
それは期待していますcatchブロックまたはtry-catchの外側にあるreturn文。私の場合、特定の型を返すときにこのようなエラーを処理するためのベストプラクティスは何ですか?Post[]
。これらのタイプのコールを構造化するより良い方法はありますか?
HTTPリクエストF私はユーザーに何らかの形で通知し、うまく失敗したい。現在、 'const response = await this._http.get(this._baseUrl +" api/JsonPlaceholder/GetPosts ");'が失敗した場合(URLエンドポイントが間違っているとします)、 'Uncaught(promise)'例外。 'const response'はステータスがない' Observable 'の型です。ステータスを得るためにこれをどのように構成しますか? –
@RyanBueningあなたが投げたエラーを通すか、再投げて、ユーザにメッセージを表示して 'getPosts()'を呼び出そうとするところでそれを処理するように思えます。これを示すために最後の例を更新しました。 – Aaron
これはうまくいくようです。私は以下を持っています:https://gist.github.com/ryanbuening/102d96807e5557e072d82f2b6f359384。このコードを間違ったエンドポイントで実行するページをロードすると、私のコンソールに500エラーが記録された警告「エラー!」が表示されます。しかし、私が再びリフレッシュすると、 'NodeInvocationException:Uncaught(promise):ReferenceError:alert is not defined'というメッセージが表示されます。なぜ私はそれを取得するだろうと警告のエラーメッセージではない知っていますか?サーバー側のレンダリングを使用して私と関係がありますか? (私はJavaScriptServices https://github.com/aspnet/JavaScriptServicesとASP.NETコアを使用しています) –