ํฐ์คํ ๋ฆฌ ๋ทฐ
axios Intercept requests_API ์์ฒญ ์ฒ๋ฆฌ ๋์ UI ์์ ๋ณด์ฌ ์ฃผ๊ธฐ
choi95 2021. 8. 3. 21:02๊ธฐ์กด ์ฝ๋
$searchInput.addEventListener('keyup', async function(event) {
$loadingIndicator.style.visibility = 'visible'; //loading UI ์น ์์ ๋๋๋ง
await searchKeyword(event.target.value, searchKeywordApi, showKeyword);
})
const searchKeywordApi = (data) => {
let res = fetch(`${API_URL}?q=${data}`).then(data => {
return data.json();
})
return res;
}
const searchKeyword = async (data, callApi, callback) => {
try {
let res = await callApi(data); //์์ฒญ ์ฒ๋ฆฌ ํ ๊ฒฐ๊ณผ ๋ฆฌํด๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ(์ง์ฐ)
$loadingIndicator.style.visibility = 'hidden'; //loading UI ์น ์์์ ๋ณด์ด์ง ์๊ฒ ์ฒ๋ฆฌ
(...)
} catch(error) {
console.log(error);
}
}
Input ์์์์ keyup ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด API ์์ฒญ ์ฒ๋ฆฌ ๋์ ์ฌ์ฉ์์๊ฒ ์ฒ๋ฆฌ ์ค์ด๋ผ๋ ์ฌ์ค์ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด
loading ๊ด๋ จ UI๋ฅผ ๋ณด์ฌ์ฃผ๋๋ก ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
The await expression causes async function execution to pause until a Promise is settled (that is, fulfilled or rejected), and to resume execution of the async function after fulfillment. When resumed, the value of the await expression is that of the fulfilled Promise.
ํ์ง๋ง ์ด๋ ๊ฒ ๋๊ธฐ ์ฒ๋ฆฌ๋ก ์ํ๋ ์ฝ๋ ์ฐ์ฐ๊ณผ ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ดํ์ ์ฒ๋ฆฌ๋ ์ฝ๋ ์ฐ์ฐ์ ๋ถ๋ฆฝ์์ผ๋ณด๋ ๋์์ ๋ช ํ์ฑ๊ณผ ๋ ๋ฆฝ์ฑ์ด ๋ค์ ๋จ์ด์ง๋ค๋ ์๊ฐ์ด ๋ค์ด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋ณด์๋ค.
axios Intercept requests
https://github.com/axios/axios#interceptors
You can intercept requests or responses before they are handled by then or catch.
axios ์ธํฐ์ ํฐ๋ ์์ฒญํ๊ธฐ ์ง์ , ์๋ต์ ๋ฐ๊ณ then, catch๋ก ์ฒ๋ฆฌ ์ง์ ์ ๊ฐ๋ก์ฑ ์ ์๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ loading ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฆฌํฉํ ๋ง ํด๋ณด์๋ค.
axios.interceptors.request.use(function (config) {
$loadingIndicator.style.visibility = 'visible'; ์์ฒญ ์ง์ ์ loading UI๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ
return config;
}, function (error) {
return Promise.reject(error);
})
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค node.JS ์ ์ถ๋ ฅ ๊ด๋ฆฌ (0) | 2021.08.22 |
---|---|
rxjs tap operator๋ฅผ ํตํ side-effect (0) | 2021.08.03 |
formData์ ๊ฐ์ ์ฐธ์กฐ ๋ฐ ์ฌ์ฉ (0) | 2021.07.30 |
CustomEvent๋ก ํน์ ์ด๋ฒคํธ ๊ธฐ๋ฅ ๋ถ๋ฆฌ (0) | 2021.07.28 |
์คํฌ๋กค ์ค์ ์์น ๊ณ์ฐ_๋์ ๋ณด์ด์ง ์๋ ๋ฒ์ (0) | 2021.07.26 |