๐ ๋ชฉ๋ก
- Introduction
- Await Block
- Short version
- Conclusion
- Reference
๐ Introduction
์๋ ํ์ธ์. ์ค๋์ svelte์ await block์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. apollo์ ๊ธฐ๋ฅ๊ณผ ์ ์ฌํ๊ธด ํด์. ๊ทธ๋ผ ํ๋ฒ ์์๋ณผ๊น์?
๐ Await Block
๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ์ ์ด๋ ์ต๋๋ค.
{#await promise}
{:then vale}
{:catch error}
{/await}
์ฒ์์ apollo์์ ์ด๋ฌํ ๋ฌธ๋ฒ์ ๋ดค์๋ ์ ๋ง ์ ๊ธฐํ๊ธด ํ๋๋ฐ ์ด์ ๋์ด์ loading์ฒ๋ฆฌ๋ฅผ ๊ฐ๊ฐ ํด์ฃผ์ง ์์๋ ์ข์๊ฑฐ ๊ฐ์์. ๊ทธ๋ผ ํ๋ฒ jsonplaceholder์์ ๊ฐ์ ๋ฐ์์ ๋ณผ๊น์?
<script>
import axios from 'axios';
let users;
const getUsers = async () => {
try {
const res = await axios.get('https://jsonplaceholder.typicode.com/users');
users = res.data;
return res;
} catch(error) {
throw new Error(error);
}
}
let promise = getUsers();
</script>
{#await promise}
<!-- โญ๏ธ ์ด๋ ๊ฒ ๊ธฐ๋ค๋ ค ์ค์ ์์ต๋๋ค... -->
<h1>...LOADING</h1>
{:then}
<!-- ๋ฐ์์จ ์๋ฃ๋ฅผ ํ๋ฒ each๋ฅผ ์ฌ์ฉํด๋ณผ๊ฒ์. -->
<ul>
{#each users as {name, username}}
<li>
<span>name: {name}</span>
<span>username: {username}</span>
</li>
{/each}
</ul>
{:catch error}
<h1>ERROR: {error.message}</h1>
{/await}
๐ Short version
๋ฐ๋ก then์ ์ฌ์ฉํด์ ๋ฝ์์ค ์๋ ์์ต๋๋ค.
{#await promise then value}
<div>{value}</div>
{/await}
๐ Conclusion
์ค๋์ ์ด๋ ๊ฒ ํด์ await block์ ๋ํด์ ์์๋ดค์ต๋๋ค. apollo๋ฅผ ์ฌ์ฉํ๋ฉด์ ์๊ฐ๋ณด๋ค ๋ง์ด ์ด๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฒ ๋๋๊ฑฐ ๊ฐ์์. ์ด๊ฒ ๊ทธ๋ฅ ๋ถ์ด์์ด์ ์ฐธ ์ข์๊ฑฐ ๊ฐ์ต๋๋ค. ๋๋์ฑ svetle์ ๋งค๋ ฅ์ ๋น ์ง๋๊ฑฐ ๊ฐ์์. ๊ฐ๊ฒฐํ๋ฉด์๋ ํ์ํ๊ฑด ๋ค์๋... ๋ด์ผ ํ์ฌ๋ฅผ ๊ฐ๋ฉด vue๋ฅผ ์ฌ์ฉํด์ผํ๋๋ฐ ๋ต๋ตํ ๋ง์์ด ์ปค์ง๊ฑฐ ๊ฐ์์.... ๐ญ ๊ทธ๋ผ ๋ค์ ํฌ์คํ ์์ ๋ง๋์~ ์๋ !
๐ Reference
'Svelte' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Svelte - Events (0) | 2020.12.29 |
---|---|
Svelte - Iteration (0) | 2020.12.26 |
Svelte - Logic (0) | 2020.12.26 |
Svelte - Props (0) | 2020.12.26 |
Svelte - Reactivity (0) | 2020.12.26 |