<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>moonscode</title>
    <link>https://moonscode.tistory.com/</link>
    <description>hello world :)</description>
    <language>ko</language>
    <pubDate>Thu, 14 May 2026 01:02:12 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>문스코딩</managingEditor>
    <image>
      <title>moonscode</title>
      <url>https://tistory1.daumcdn.net/tistory/2892552/attach/0f533779c35d42d5aa9922199a3fc842</url>
      <link>https://moonscode.tistory.com</link>
    </image>
    <item>
      <title>[MacOS] 내가 보려고 만든 MacOS 초기설정 (2) - 환경설정</title>
      <link>https://moonscode.tistory.com/257</link>
      <description>&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Dev&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;git &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git config 설정&lt;/p&gt;
&lt;pre id=&quot;code_1710739515519&quot; class=&quot;routeros&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;$ git config --global user.name &quot;mooncoding&quot;
$ git config --global user.email &quot;mooncoding@naver.com&quot;

$ git config user.name
$ git config user.email&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;brew&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1710739515519&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;

# 필요하다면 Next steps을 실행하세요
==&amp;gt; Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
    (echo; echo 'eval &quot;$(/opt/homebrew/bin/brew shellenv)&quot;') &amp;gt;&amp;gt; /Users/USER/.zprofile
    eval &quot;$(/opt/homebrew/bin/brew shellenv)&quot;
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh
    
# 이 부분을 실행하세요
(echo; echo 'eval &quot;$(/opt/homebrew/bin/brew shellenv)&quot;') &amp;gt;&amp;gt; /Users/USER/.zprofile
    eval &quot;$(/opt/homebrew/bin/brew shellenv)&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;nvm (w. brew)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nvm을 설치하고 환경변수를 셋팅합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1710739515520&quot; class=&quot;jboss-cli&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;$ brew install nvm

$ mkdir ~/.nvm

$ vi ~/.bash_profile # 또는 ~/.zshrc

---.bash_profile
# &quot;brew intall nvm&quot; 명령어 결과에 적용할 환경변수 값이 가이드 된다. (아래 경로와 다를 수 있으니 유의 ⚠️)
export NVM_DIR=&quot;$HOME/.nvm&quot;
[ -s &quot;/usr/local/opt/nvm/nvm.sh&quot; ] &amp;amp;&amp;amp; . &quot;/usr/local/opt/nvm/nvm.sh&quot;  # This loads nvm
[ -s &quot;/usr/local/opt/nvm/etc/bash_completion.d/nvm&quot; ] &amp;amp;&amp;amp; . &quot;/usr/local/opt/nvm/etc/bash_completion.d/nvm&quot;  # This loads nvm bash_completion
---

$ source ~/.bash_profile

$ nvm -v&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node의 기본 버전을 설정합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1710898903305&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ nvm alias default &amp;lt;version&amp;gt; # nvm alias default 18.18.2

$ nvm use default

$ nvm current # node -v&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;node&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1710739515520&quot; class=&quot;elixir&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;$ nvm install &amp;lt;v&amp;gt;
$ nvm use &amp;lt;v&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;yarn, wget&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1710739515520&quot; class=&quot;mipsasm&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;$ brew install yarn
$ brew install wget&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;on-my-zsh &amp;gt; terminal tool&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1710739515520&quot; class=&quot;asciidoc&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# install
$ sh -c &quot;$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)&quot;

# theme
$ vi ~/.zshrc

=== .zshrc ===
$ ZSH_THEME=&quot;af-magic&quot;
=== .zshrc ===&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;Terminal&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;iOS 시뮬레이터&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1710739515521&quot; class=&quot;livecodeserver&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# appstore &amp;gt; xcode 먼저 다운로드 및 실행
$ open -a simulator&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;hosts 설정&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1710739515521&quot; class=&quot;yaml&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;$ vi /etc/hosts

---hosts
127.0.0.1 	local.moonscode.tistory.com
---&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/MacOS</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/257</guid>
      <comments>https://moonscode.tistory.com/257#entry257comment</comments>
      <pubDate>Mon, 18 Mar 2024 14:25:49 +0900</pubDate>
    </item>
    <item>
      <title>[Browser] CORS</title>
      <link>https://moonscode.tistory.com/256</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;CORS&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 서버에서 설정이 열여있어야 함 (nginx, service, .. 등등에서 설정되어 있을 수 있음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 클라이언트에서 CORS 설정을 header에 포함하여 요청해야 함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Browser</category>
      <category>CORS</category>
      <category>cross-origin</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/256</guid>
      <comments>https://moonscode.tistory.com/256#entry256comment</comments>
      <pubDate>Thu, 14 Mar 2024 16:56:37 +0900</pubDate>
    </item>
    <item>
      <title>[Git] checkout</title>
      <link>https://moonscode.tistory.com/255</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;원격 브랜치의 상태를 확인&lt;/h2&gt;
&lt;pre id=&quot;code_1710303989272&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ git fetch origin &amp;lt;remote-branch-name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;base 브랜치를 원격에서 가져오는 방법&lt;/h2&gt;
&lt;pre id=&quot;code_1710304000376&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ git checkout -b &amp;lt;new-branch-name&amp;gt; origin/&amp;lt;remote-branch-name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/Git</category>
      <category>Checkout</category>
      <category>git</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/255</guid>
      <comments>https://moonscode.tistory.com/255#entry255comment</comments>
      <pubDate>Wed, 13 Mar 2024 13:54:45 +0900</pubDate>
    </item>
    <item>
      <title>[MacOS] Amethyst (2) - Layout</title>
      <link>https://moonscode.tistory.com/254</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근 Amethyst의 Layout 기능을 사용하고 OSX  App Window 관리 프로그램을 Amethyst로 정착했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 Spectacle, Rectangle등의 프로그램은 개별 App Window을 조작했다면, Amethyst Layout 기능은 그것과는 결이 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 화면에서 App들이 배치될 방식의 Layout을 미리 설정하면 App들이 Layout 대로 자리를 채우는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사진을 보면 Layout 개념을 이해하는데 도움이 될 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;575&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg5SVk/btsFF0NcPMi/6MCdcdsqJjtNmMOmQCs2ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg5SVk/btsFF0NcPMi/6MCdcdsqJjtNmMOmQCs2ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg5SVk/btsFF0NcPMi/6MCdcdsqJjtNmMOmQCs2ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg5SVk%2FbtsFF0NcPMi%2F6MCdcdsqJjtNmMOmQCs2ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;952&quot; height=&quot;575&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;575&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 레이아웃은 &quot;Tall&quot;이란 형태의 레이아웃이고 Amethyst에서 더 다양한  Layout을 제공하고 있다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps/MacOS</category>
      <category>Amethyst</category>
      <category>layout</category>
      <category>MacOS</category>
      <category>OSX</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/254</guid>
      <comments>https://moonscode.tistory.com/254#entry254comment</comments>
      <pubDate>Mon, 11 Mar 2024 13:40:10 +0900</pubDate>
    </item>
    <item>
      <title>[브라우저] https redirect 해제하기</title>
      <link>https://moonscode.tistory.com/253</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;chrome&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;1. &lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;chrome://net-internals&lt;/span&gt; 접속&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;2. &lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;Domain Security Policy&lt;/span&gt; 탭 선택&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;3. &lt;span style=&quot;background-color: #282828; color: #e3e3e3; text-align: left;&quot;&gt;Delete domain security policies&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;항목에 redirect 해제 필요한 도메인 입력.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mxlc6/btsFjJRVTkD/MtPHFpupwUFGUlqi7XdsY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mxlc6/btsFjJRVTkD/MtPHFpupwUFGUlqi7XdsY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mxlc6/btsFjJRVTkD/MtPHFpupwUFGUlqi7XdsY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMxlc6%2FbtsFjJRVTkD%2FMtPHFpupwUFGUlqi7XdsY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1037&quot; height=&quot;390&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>DevOps/Browser</category>
      <category>https</category>
      <category>redirect</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/253</guid>
      <comments>https://moonscode.tistory.com/253#entry253comment</comments>
      <pubDate>Mon, 26 Feb 2024 21:41:09 +0900</pubDate>
    </item>
    <item>
      <title>[Postman] pre-request script (module import)</title>
      <link>https://moonscode.tistory.com/252</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Postman을 사용하다 보면 단순한 request-body가 아닌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비즈니스 로직이 포함되어야 하는 request-body를 전송해야 하는 경우가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴 때 pre-request script 기능을 사용하면 javascript를 이용해 request-body를 만들 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;외부 모듈 가져오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.postman.com/adding-external-libraries-in-postman/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://blog.postman.com/adding-external-libraries-in-postman/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708347198745&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Adding External Libraries in Postman | Postman Blog&quot; data-og-description=&quot;Learn how to use the libraries included in the Postman sandbox, then review some methods for adding your own external libraries.&quot; data-og-host=&quot;blog.postman.com&quot; data-og-source-url=&quot;https://blog.postman.com/adding-external-libraries-in-postman/&quot; data-og-url=&quot;https://blog.postman.com/adding-external-libraries-in-postman/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/l483r/hyVm1BWr5J/A1kYlSKjDpf2NMxC0KTkzK/img.jpg?width=1632&amp;amp;height=864&amp;amp;face=0_0_1632_864,https://scrap.kakaocdn.net/dn/hcH1D/hyVmVn9WMt/xn0ZyFSyRYD5PmsECmPhq0/img.png?width=1000&amp;amp;height=440&amp;amp;face=0_0_1000_440,https://scrap.kakaocdn.net/dn/gp96y/hyVmWtRyLI/eDa9269GPMwHv6EFq0Uyc0/img.png?width=1000&amp;amp;height=388&amp;amp;face=0_0_1000_388&quot;&gt;&lt;a href=&quot;https://blog.postman.com/adding-external-libraries-in-postman/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.postman.com/adding-external-libraries-in-postman/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/l483r/hyVm1BWr5J/A1kYlSKjDpf2NMxC0KTkzK/img.jpg?width=1632&amp;amp;height=864&amp;amp;face=0_0_1632_864,https://scrap.kakaocdn.net/dn/hcH1D/hyVmVn9WMt/xn0ZyFSyRYD5PmsECmPhq0/img.png?width=1000&amp;amp;height=440&amp;amp;face=0_0_1000_440,https://scrap.kakaocdn.net/dn/gp96y/hyVmWtRyLI/eDa9269GPMwHv6EFq0Uyc0/img.png?width=1000&amp;amp;height=388&amp;amp;face=0_0_1000_388');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Adding External Libraries in Postman | Postman Blog&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learn how to use the libraries included in the Postman sandbox, then review some methods for adding your own external libraries.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.postman.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pre-request script는 기본적으로 외부모듈 import를 지원하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴 때 사용할 수 있는 방법 2가지가 있는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;첫 번째, 내장 모듈을 사용하는 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Module을 사용할 수 없는 것에 불편함이 있기 때문에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 내장 모듈을 제공합니다. moment, lodash, querystring 같은 script를 작성하는데 기본적으로 필요한 모듈들이 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1708348154932&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let moment = require('moment');
let jsonResponse = pm.response.json();
console.log(&quot;formatted date =&quot;, moment(jsonResponse.args.randomDate).format(&quot;MMM Do YYYY&quot;));&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외에도 기본적인 모듈을 제공하고 있어서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용하려는 모듈이 내장 모듈로 지원하는지 아래 링크를 통해 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-external-libraries&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-external-libraries&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708347260279&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Manage API data and workflows using Postman JavaScript objects | Postman Learning Center&quot; data-og-description=&quot;Manage API data and workflows using Postman JavaScript objects: documentation for Postman, the collaboration platform for API development. Create better APIs&amp;mdash;faster.&quot; data-og-host=&quot;learning.postman.com&quot; data-og-source-url=&quot;https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-external-libraries&quot; data-og-url=&quot;https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QsqWy/hyVm3sZss2/5Kmq2bRVfOekDBckPF5dkk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/CVcOQ/hyVmSSvHCs/hZhcv4UU6vPS2W580Q3Rkk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-external-libraries&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-external-libraries&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QsqWy/hyVm3sZss2/5Kmq2bRVfOekDBckPF5dkk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/CVcOQ/hyVmSSvHCs/hZhcv4UU6vPS2W580Q3Rkk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Manage API data and workflows using Postman JavaScript objects | Postman Learning Center&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Manage API data and workflows using Postman JavaScript objects: documentation for Postman, the collaboration platform for API development. Create better APIs&amp;mdash;faster.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;learning.postman.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;두 번째, runtime에 모듈을 가져오는 것.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Postman 내장 모듈에 없다면 cdn으로 런타임시에 가져오는 방법이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 사용하고자 하는 모듈의 cdn 경로를 준비합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1708348117384&quot; class=&quot;typescript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;pm.sendRequest(&quot;https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/dayjs.min.js&quot;, (err, res) =&amp;gt; {
   //convert the response to text and save it as an environment variable
   pm.collectionVariables.set(&quot;dayjs_library&quot;, res.text());
 
   // eval will evaluate the JavaScript code and initialize the min.js
   eval(pm.collectionVariables.get(&quot;dayjs_library&quot;));
 
   // you can call methods in the cdn file using this keyword
   let today = new Date();
   console.log(&quot;today=&quot;, today);
   console.log(this.dayjs(today).format())
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DevOps</category>
      <category>module</category>
      <category>Postman</category>
      <category>pre-request</category>
      <category>script</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/252</guid>
      <comments>https://moonscode.tistory.com/252#entry252comment</comments>
      <pubDate>Mon, 19 Feb 2024 22:09:52 +0900</pubDate>
    </item>
    <item>
      <title>[JavaScript] 그림으로 이해하는 자바스크립트 Array</title>
      <link>https://moonscode.tistory.com/251</link>
      <description>&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//logo/js.drawio.png&quot; alt=&quot;&quot; width=&quot;988&quot; height=&quot;495&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;Array 선언&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/declare.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;길이 얻기 (length)&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/length.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
console.log(animal.length) // 7&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;Element 얻기 ([idx])&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/get.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
console.log(animal[3]) // &quot;dog&quot;&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;Index 얻기 (indexOf)&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;만약 배열안에 찾는 값이 없다면&amp;nbsp;&lt;/span&gt;&lt;b&gt;-1&lt;/b&gt;을 반환.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/index.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
const index = animal.indexOf(”dog”)
console.log(index) // 3&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;앞에 Element 추가/제거 (unshift, shift)&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/add-first.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
const len = animal.unshift(”ant”)
console.log(len) // 7
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/remove-first.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
const element = animal.shift()
console.log(element) // &quot;ant&quot;
console.log(animal) // [&quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;뒤에 Element 추가/제거 (push, pop)&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/add-last.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;]
animal.push(&quot;giraffe&quot;)
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;color: #333333;&quot;&gt;push 함수는&amp;nbsp;&lt;/span&gt;&lt;b&gt;arr[arr.length]='value'&lt;/b&gt; 형태로 처리할 수도 있다.&lt;br&gt;다만, 추가하려는 index값이 전체 배열 길이보다 크다면 index 위치까지 undefined로 채우게 된다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;]
animal[6] = &quot;giraffe&quot;
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]

const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;]
animal[7] = &quot;giraffe&quot;
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, undefined, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/remove-last.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
animal.pop()
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size14&quot; style=&quot;text-align: left;&quot;&gt; &lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;N번째에 Element 추가/제거 (splice, delete)&lt;/h2&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;splice(idx, len, ...rest) // return []&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;b&gt;idx&lt;/b&gt;의 위치부터 &lt;b&gt;len&lt;/b&gt;만큼 제거하고 &lt;b&gt;...rest&lt;/b&gt; 요소를 삽입한다. 그리고 제거된 배열을 반환한다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/add-index.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
animal.splice(3, 0, &quot;dog&quot;)
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/remove-index.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
const removeAnimal = animal.splice(3, 1)
console.log(removeAnimal) // [&quot;dog&quot;]
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;delete를 통해 N번째 element를 제거할 수도 있다.&lt;br&gt;하지만 index 위치에서 element 빠지는 게 아닌 element가 undefined로 변경된다는 게 다르다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
delete animal[3]
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, undefined, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;Element 범위 얻기 (slice)&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/get-range.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
console.log(animal.slice(3)) // [&quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
console.log(animal.slice(0, 4)) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;] 
console.log(animal.slice(3, 6)) // [&quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;Element 변경하기 (1)&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/set.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]
animal[3] = &quot;deer&quot;
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;deer&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;Element 변경하기 (2) - 범위 (splice)&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/set-range.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animal = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;, &quot;fox&quot;]
const removeAnimal = animal.splice(3, 3, &quot;dog&quot;, &quot;eagle&quot;)
console.log(removeAnimal) // [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]
console.log(animal) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;합치기 ( concat)&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/concat.drawio.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;const animalGroupA = [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;]
const animalGroupB = [&quot;eagle&quot;, &quot;fox&quot;, &quot;garaffe&quot;]
const animalGroupC = animalGroupA.concat(animalGroupB)
console.log(animalGroupC) // [&quot;ant&quot;, &quot;beer&quot;, &quot;cat&quot;, &quot;dog&quot;, &quot;eagle&quot;, &quot;fox&quot;, &quot;garaffe&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;초기화&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;JavaScript는 배열을 초기화하는 함수를 지원하지 않지만,&amp;nbsp;아래와 같이 다양한 방법으로 초기화할 수 있다.&lt;/p&gt;&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;animal = []
animal.length = 0
animal.splice(0, animal.length)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍언어/JavaScript</category>
      <category>array</category>
      <category>Concat</category>
      <category>java</category>
      <category>JavaScript</category>
      <category>length</category>
      <category>Shift</category>
      <category>slice</category>
      <category>splice</category>
      <category>unshift</category>
      <category>자바스크립트</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/251</guid>
      <comments>https://moonscode.tistory.com/251#entry251comment</comments>
      <pubDate>Thu, 17 Aug 2023 00:17:24 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 그림으로 이해하는 파이썬 List</title>
      <link>https://moonscode.tistory.com/250</link>
      <description>&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//logo/python.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;List 선언&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/declare.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt; animal = [&amp;rdquo;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;길이 얻기 (len)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/length.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;animal = [&amp;rdquo;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
print(len(animal)) // 7&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Element 얻기&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/get.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;animal = [&amp;rdquo;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
print(animal[3]) # &quot;dog&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Index 얻기 (index)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/index.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;animal = [&amp;rdquo;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
print(animal.index(&quot;dog&quot;)) # 3&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;앞에 Element 추가/제거 (insert, del)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/add-first.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;animal = [&amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
animal.insert(0, &quot;ant&quot;)
print(animal) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/remove-first.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
del animal[0]
print(animal) # [&amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;deer&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;뒤에 Element 추가/제거 (append, pop)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/add-last.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;]
animal.append(0, &quot;giraffe&quot;)
print(animal) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/remove-last.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
animal.pop()
print(animal) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt; &lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;N번째에 Element 추가/제거 (insert, remove, pop)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/add-index.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
animal.insert(3, &quot;dog&quot;)
print(animal) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/remove-index.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
animal.pop(3) # animal.remove(&quot;dog&quot;)
print(animal) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Element 범위 얻기 ([n:m])&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/get-range.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
print(animal[3:]) # [&amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
print(animal[:4]) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &quot;dog&quot;]
print(animal[3:6]) # [&amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Element 변경하기 (1)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/set.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
animal[3] = &quot;deer&quot;
print(animal) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;deer&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Element 변경하기 (2) - 범위&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/set-range.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;prolog&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;apple&amp;rdquo;, &amp;ldquo;banana&amp;rdquo;, &amp;ldquo;cherry&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;]
animal[3:6] = [&quot;dog&quot;, &quot;eagle&quot;]
print(animal) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;합치기 (extend, +)&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/merge.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;animalGroupA = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;]
animalGroupB = [&quot;eagle&quot;, &amp;rdquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
animalGroupA.extend(animalGroupB)
print(animalGroupA) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io//lang/list/concat.drawio.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;animalGroupA = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;]
animalGroupB = [&quot;eagle&quot;, &amp;rdquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
animalGroupC = animalGroupA + animalGroupB
print(animalGroupC) # [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &amp;ldquo;eagle&amp;rdquo;, &amp;ldquo;fox&amp;rdquo;, &quot;giraffe&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;초기화 (clear)&lt;/h2&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;animal = [&quot;ant&quot;, &amp;rdquo;beer&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;rdquo;dog&amp;rdquo;, &quot;eagle&quot;, &amp;rdquo;fox&amp;rdquo;, &amp;ldquo;giraffe&amp;rdquo;]
animal.clear()
print(animal) # []&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍언어/Python</category>
      <category>APPEND</category>
      <category>clear</category>
      <category>extend</category>
      <category>index</category>
      <category>INSERT</category>
      <category>len</category>
      <category>list</category>
      <category>pop</category>
      <category>python</category>
      <category>remove</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/250</guid>
      <comments>https://moonscode.tistory.com/250#entry250comment</comments>
      <pubDate>Tue, 15 Aug 2023 23:41:50 +0900</pubDate>
    </item>
    <item>
      <title>[Redux] redux-thunk</title>
      <link>https://moonscode.tistory.com/249</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Thunk란?&lt;/b&gt;&lt;br /&gt;먼저 thunk를 이해해야 redux가 비동기를 어떻게 처리하는지 이해할 수 있다.&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%8D%BD%ED%81%AC&quot;&gt;https://ko.wikipedia.org/wiki/%EC%8D%BD%ED%81%AC&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1692014610340&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;썽크 - 위키백과, 우리 모두의 백과사전&quot; data-og-description=&quot;위키백과, 우리 모두의 백과사전. 컴퓨터 프로그래밍에서 썽크(Thunk)는 기존의 서브루틴에 추가적인 연산을 삽입할 때 사용되는 서브루틴이다. 썽크는 주로 연산 결과가 필요할 때까지 연산을 &quot; data-og-host=&quot;ko.wikipedia.org&quot; data-og-source-url=&quot;https://ko.wikipedia.org/wiki/%EC%8D%BD%ED%81%AC&quot; data-og-url=&quot;https://ko.wikipedia.org/wiki/%EC%8D%BD%ED%81%AC&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%8D%BD%ED%81%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.wikipedia.org/wiki/%EC%8D%BD%ED%81%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;썽크 - 위키백과, 우리 모두의 백과사전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;위키백과, 우리 모두의 백과사전. 컴퓨터 프로그래밍에서 썽크(Thunk)는 기존의 서브루틴에 추가적인 연산을 삽입할 때 사용되는 서브루틴이다. 썽크는 주로 연산 결과가 필요할 때까지 연산을&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ko.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vC936/btsrgtaogs0/xH9wKEweKGhxIrkY6K4KtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vC936/btsrgtaogs0/xH9wKEweKGhxIrkY6K4KtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vC936/btsrgtaogs0/xH9wKEweKGhxIrkY6K4KtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvC936%2Fbtsrgtaogs0%2FxH9wKEweKGhxIrkY6K4KtK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;997&quot; height=&quot;267&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;thunk는 &lt;b&gt;&quot;생각된(think의 과거분사, 실제로 없는 말)&quot;&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;후 무엇인가를 실행하겠다. 라는 뜻으로,&lt;br /&gt;redux에서는 &lt;b&gt;&quot;&lt;b&gt;무엇인가 로직을 처리하고 dispatch를 실행하겠다.&lt;/b&gt;&quot;&lt;/b&gt;&amp;nbsp;라고 생각하면 된다.&lt;br /&gt;즉, dispatch전 실행될 코드를 thunk로 이해하면 되겠다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;redux-thunk&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 redux는 비동기처리가 불가능하다.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt; Action을 통한 Reducer 처리는 오직 동기로만 이루어진다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그럼 Redux에서 1초후에 계산하는 비동기처리는 아예 불가능한 걸까?&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이는 &lt;b&gt;redux-thunk&lt;/b&gt;라는 미들웨어로 해결할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;redux-thunk는 redux의 미들웨어로 &lt;b&gt;action 대신 function을 반환하는 action creater를 사용&lt;/b&gt;할 수 있게 한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style7&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50.0%; height: 17px; text-align: justify;&quot;&gt;&lt;b&gt;redux&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50.0%; height: 17px; text-align: justify;&quot;&gt;&lt;b&gt;redux-thunk&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50.0%; height: 17px; text-align: justify;&quot;&gt;dispatch(&lt;b&gt;action&lt;/b&gt;)&lt;/td&gt;
&lt;td style=&quot;width: 50.0%; height: 17px; text-align: justify;&quot;&gt;dispatch(&lt;b&gt;(dispatch) =&amp;gt; { dispatch(action) }&lt;/b&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io/redux/redux-thunk/redux-thunk-concept1.drawio.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Action에 1초후에 계산하는 비동기처리가 함수로 들어간다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; Action에 함수가 들어간다니... 객체가 아니기 때문에 Redux는 에러를 반환한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 이 때 redux-thunk 미들웨어가 적용되어 있다면, thunk 함수 형태의 Action을 미들웨어가 처리해준다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1692018207509&quot; class=&quot;smali&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;function incrementAsync() {
&amp;nbsp;&amp;nbsp;return dispatch =&amp;gt; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setTimeout(() =&amp;gt; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Yay! Can invoke sync or async actions with `dispatch`
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dispatch(increment())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, 1000)
&amp;nbsp;&amp;nbsp;}
}

dispatch(incrementAsync()) // 실행&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;dispatch 안에 Action으로 1초후에 계산하는 비동기 thunk 함수를 전달한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;redux-thunk가 적용되어 있다면 thunk 함수의 로직(1초 지연)이 먼저 실행되고 의도한 dispatch가 실행된다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;redux-thunk 구성.&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;yarn add redux-thunk&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1692018737487&quot; class=&quot;javascript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { createStore, applyMiddleware } from 'redux'
import thunk from 'redux-thunk'

const store = createStore(rootReducer, applyMiddleware(thunk))&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>FrontEnd/Redux</category>
      <category>redux</category>
      <category>redux-thunk</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/249</guid>
      <comments>https://moonscode.tistory.com/249#entry249comment</comments>
      <pubDate>Mon, 14 Aug 2023 17:50:07 +0900</pubDate>
    </item>
    <item>
      <title>[ReduxToolkit] createAsyncThunk</title>
      <link>https://moonscode.tistory.com/248</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;redux에서 비동기함수 처리는 [redux-thunk](&lt;a href=&quot;https://github.com/reduxjs/redux-thunk&quot;&gt;https://github.com/reduxjs/redux-thunk&lt;/a&gt;)라는 별도의 미들웨어를 통해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 rtk은 비동기함수 처리를 위해 createAsyncThunk 함수를 내장하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Thunk란?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://moonscode.tistory.com/249&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://moonscode.tistory.com/249&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1692003029289&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Redux redux-thunk&quot; data-og-description=&quot;Thunk란? 먼저 thunk를 이해해야 redux가 비동기를 어떻게 처리하는지 이해할 수 있다. https://ko.wikipedia.org/wiki/%EC%8D%BD%ED%81%AC [썽크 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전.&quot; data-og-host=&quot;moonscode.tistory.com&quot; data-og-source-url=&quot;https://moonscode.tistory.com/249&quot; data-og-url=&quot;https://moonscode.tistory.com/249&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1BamM/hyTCyoKDbU/92ArlTk74EX4Czq3D7g1Dk/img.png?width=800&amp;amp;height=214&amp;amp;face=0_0_800_214,https://scrap.kakaocdn.net/dn/cE2RbG/hyTCGUBBjx/tEbYf53qHJHe9h0SR99QKk/img.png?width=800&amp;amp;height=214&amp;amp;face=0_0_800_214,https://scrap.kakaocdn.net/dn/vpmlk/hyTFmtpTRf/Zxr5O8MHNihOl80kfpvgtK/img.png?width=997&amp;amp;height=267&amp;amp;face=0_0_997_267&quot;&gt;&lt;a href=&quot;https://moonscode.tistory.com/249&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://moonscode.tistory.com/249&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1BamM/hyTCyoKDbU/92ArlTk74EX4Czq3D7g1Dk/img.png?width=800&amp;amp;height=214&amp;amp;face=0_0_800_214,https://scrap.kakaocdn.net/dn/cE2RbG/hyTCGUBBjx/tEbYf53qHJHe9h0SR99QKk/img.png?width=800&amp;amp;height=214&amp;amp;face=0_0_800_214,https://scrap.kakaocdn.net/dn/vpmlk/hyTFmtpTRf/Zxr5O8MHNihOl80kfpvgtK/img.png?width=997&amp;amp;height=267&amp;amp;face=0_0_997_267');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Redux redux-thunk&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Thunk란? 먼저 thunk를 이해해야 redux가 비동기를 어떻게 처리하는지 이해할 수 있다. https://ko.wikipedia.org/wiki/%EC%8D%BD%ED%81%AC [썽크 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;moonscode.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;createAsyncThunk란?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redux-thunk는 단순히 내 코드블럭을 wrapping하여 실행을 지연시키는 함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;createAsyncThunk는 이 redux-thunk 기능을 구조화한 API이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지연단계를 &lt;b&gt;pending, fulfilled, rejected&lt;/b&gt; 3단계로 구조화하여 제공하고 다양한 옵션으로 그 과정을 세밀히 조정할 수 있다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style7&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;pending&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span&gt;thunk 실행중&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;fulfilled&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;thunk&lt;/span&gt;&amp;nbsp;완료&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;rejected&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;thunk&lt;span&gt; &lt;/span&gt;&lt;/span&gt;실패&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일차적으로 반환받는 결과는 thunk의 단계이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;thunk의 단계가 fulfilled이 되면 비로소 thunk의 결과값을 받을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://moonscoding.github.io/moonscode.draw.io/redux-toolkit/createAsyncThunk/createAsyncThunk.drawio.png&quot; /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;createAsyncThunk 선언.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;createAsyncThunk는 createAction을 통해서 pending, fulfilled 그리고 rejected 세 가지 상태를 반환.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(createAsyncThunk에서 반환하는 단계도 redux에서는 action으로 정의)&lt;/p&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;// fetchUserById.pending
// fetchUserById.fulfilled
// fetchUserById.rejected
const fetchUserById = createAsyncThunk(
  // param1. type - thunk를 식별하기 위한 action type
  // 'users/fetchByIdStatus/pending'
  // 'users/fetchByIdStatus/fulfilled'
  // 'users/fetchByIdStatus/rejected'
  'users/fetchByIdStatus',
  // param2. payloadCreator - (비동기) 로직을 반환하는 함수
  // (arg, thunkAPI) =&amp;gt; {}
  // arg - dispatch할 때 전달된 매개변수
  // thunkAPI = { dispatch, getState, extra, requestId, signal, rejectWithValue, fulfillWithValue } - redux에서 thunk 함수로 전달하는 매개변수와 옵션
  async (userId: number, thunkAPI) =&amp;gt; {
    const response = await userAPI.fetchById(userId)
    return response.data
  }
  // param3. options
  // { condition, dispatchConditionRejection, idGenerator, serializeError, getPendingMeta }
)


// Then, handle actions in your reducers:
const usersSlice = createSlice({
  name: 'users',
  initialState,
  reducers: {
    // standard reducer logic, with auto-generated action types per reducer
  },
  extraReducers: (builder) =&amp;gt; {
    // Add reducers for additional action types here, and handle loading state as needed
    builder.addCase(fetchUserById.fulfilled, (state, action) =&amp;gt; {
      // Add user to the state array
      state.entities.push(action.payload)
    })
  },
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;createAsyncThunk &lt;/b&gt;&lt;b&gt;Result.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;createAsyncThunk는 Promise를 반환.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비동기의 결과값(Thunk 선언. 예제에서 response.data 값)에 접근하고 싶다면?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;extraReducers에서 fulfilled 단계를 정의하면 되지만, 클릭이벤트와 같이 redux의 context 밖에서 처리하려면 unwrap 속성이 필요&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 36px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt;without unwrap&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt;unwrap&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;반환된 Promise를 직접 사용하여 비동기 작업을 처리.&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 19px;&quot;&gt;반환된 Promise에서 비동기 작업의 결과값을 추출.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;// thunk는 기본적으로 promise(함수의 단계를 반환하는 promise)를 반환
const onClick = () =&amp;gt; {
  dispatch(fetchUserById(userId)).then(() =&amp;gt; {
    // do additional work
  })
}

// unwrap
// createAsyncThunk가 반환한 Promise에는 fulfilled, rejected 상태를 처리할 수 있는 unwrap 속성을 가진다.
const onClick = () =&amp;gt; {
  dispatch(fetchUserById(userId))
    .unwrap()
    .then((originalPromiseResult) =&amp;gt; {
      // handle result here
    })
    .catch((rejectedValueOrSerializedError) =&amp;gt; {
      // handle error here
    })
}

// unwrapResult
const onClick = () =&amp;gt; {
  dispatch(fetchUserById(userId))
    .then(unwrapResult)
    .then((originalPromiseResult) =&amp;gt; {
      // handle result here
    })
    .catch((rejectedValueOrSerializedError) =&amp;gt; {
      // handle result here
    })
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>FrontEnd/Redux</category>
      <category>createAsyncThunk</category>
      <category>redux</category>
      <category>redux-toolkit</category>
      <category>RTK</category>
      <author>문스코딩</author>
      <guid isPermaLink="true">https://moonscode.tistory.com/248</guid>
      <comments>https://moonscode.tistory.com/248#entry248comment</comments>
      <pubDate>Mon, 14 Aug 2023 14:38:24 +0900</pubDate>
    </item>
  </channel>
</rss>