前置き
今回は非同期通信で使うtry/catch
をやっていきます💫
JSONplaceholderの
postsデータを取得・表示します。
⬇️こちらの記事で
非同期通信の基本を解説しています👀
(Promise, async/awaitなど)
【Nuxt.js】Nuxt文法編:asyncData
try/catchとは
1 2 3 4 5 |
try { // 通常の場合の実行式 } catch() { // 例外の場合の実行式 } |
エラーハンドリングです。
なので基本的なコードは
こんな感じです。
1 2 3 4 5 |
try { // 通常の場合の実行式 } catch(error) { console.log(error) } |
非同期通信では
・通常の場合
・エラー(例外)の場合
分けて処理をしたいので
非同期通信async
と
組み合わせて使うわけです🧙♀️
async
は非同期通信の構文です。Promise
よりも簡潔に
非同期処理が書けるのがメリット🌟
そしてasync/await
で1セット💫
サンプルコード
以前に非同期通信の解説で使用した
JSONplaceholderデータの取得用コード
こちらのBefore Afterを
見てみましょう👀
【Nuxt.js】Nuxt文法編:asyncData
After
try
の中に処理を移動させてcatch
でエラーのパターンを
追加しただけです!!
シンプルですね✨
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<template> <div class="page"> <ul> <li v-for="post in posts" :key="post.id"> {{ post.title }} </li> </ul> </div> </template> <script> import axios from 'axios' export default { async asyncData () { try { const res = await axios.get('https://jsonplaceholder.typicode.com/posts') return { posts: res.data } } catch (error) { console.log(error) } } } </script> |
Before
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<template> <div class="page"> <ul> <li v-for="post in posts" :key="post.id"> {{ post.title }} </li> </ul> </div> </template> <script> import axios from 'axios' export default { async asyncData () { const res = await axios.get('https://jsonplaceholder.typicode.com/posts') return { posts: res.data } } } </script> |
まとめ
それぞれの役割を明確にすることでasync
の中でtry
とcatch
で分岐して…
と構図が分かりやすくなりますね💫
非同期通信の書き方は
バリエーションがあるので
ぜひやってみてください♪