inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

개발 환경 관련 질문입니다.

해결됨

Cursor AI로 만들면서 배우는 Web & Javascript

안녕하세요, 강사님. 이제 강의를 신청하고 본격적으로 수업을 들으려고 합니다 제가 현재 리눅스(페도라) 버전 노트북과 Window 버전 데스크탑을 이용 중인데, 혹시 리눅스로도 해당 강의를 따라갈 수 있을까요? (첫 개발이라 좀 더 쉬운 환경에서 작업하고 싶기는 합니다!) 제가 주로 카페나 외부에서 혼자 노트북으로 작업하는 일이 많아서 리눅스로도 해당 강의 내용을 충실히 이행할 수 있는지 여쭤보고 싶어서 문의 남겼습니다. 답변 부탁드리겠습니다:> 아, 그리고 좋은 강의 만들어주셔서 감사합니다!

  • HTML/CSS
  • javascript
  • llm
  • ai-활용-(ax)
  • cursorai
세세님 댓글 1 좋아요 0 조회수 88

도커 설치 여부 문의 드립니다!

해결됨

[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

수익형 AI 강의 들으면서 다 설치한 상태인데, 나만의 RAG 시스템 강의 따라가려고 하니 수익형 AI 강의에서는 설치하지 않았던 docker desktop 을 이번 강의에서는 초반에 설치를 하던데, 그대로 하면 될까요? docker desktop 설치한다고 해서 기존에 해뒀던거에 영향이 가진 않겠지요?

  • n8n
  • 인공지능(ai)
  • rag
  • ai-활용-(ax)
  • ai-agent
  • 카카오공채-개발
  • 카카오공채-서비스
마크북 댓글 2 좋아요 0 조회수 69

리액트 설치시 vite와 create React APP 차이

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

선생님 인강 잘듣고 있읍니다 인강에선 react 설치시 vite 로설치하고 책에서는 create React App 으로 설치하는데 대략검색해보니 vite 설치시 효울적이고 빠르다고 하는데 책으로 공부하면 create React App으로 설치해도 상관없나요

  • javascript
  • react
  • node.js
  • 카카오공채-개발
ymckh1005 댓글 3 좋아요 0 조회수 232

깃 권한 요청 드립니다

미해결

Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념

인프런 아이디 : @sbn041778144 인프런 이메일 : sbn04177@naver.com 깃헙 아이디 : sbn04177@naver.com 깃헙 아이디 : EunJaemm

  • javascript
  • vue.js
sbn04177 댓글 1 좋아요 0 조회수 78

9강 ai에어전트 파서 오류

해결됨

[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

ai에이전트에 강의와 동일하게 파서를 입력하고 동작하면 에러가 발생합니다. 어떤 이유인지를 모르겠습니다...코드를 붙여넣기에는 너무 길다고 하네요.

  • n8n
  • 인공지능(ai)
  • rag
  • ai-활용-(ax)
  • ai-agent
  • 카카오공채-개발
  • 카카오공채-서비스
강민석 댓글 2 좋아요 0 조회수 95

React 훅 구현 원리와 실무 패턴 관련 질문 (useState, useEffect 순서 및 핸들러 구조)

미해결

[React 2부] 고급 주제와 훅

안녕하세요, 강의에서 훅( useState , useEffect ) 사용 규칙과 내부 동작 원리를 공부하다가 궁금한 점이 있어 질문드립니다. React는 훅을 순서 기반 으로 관리한다고 배웠습니다. 그래서 다음과 같은 규칙이 있는 걸로 알고 있습니다: 훅은 컴포넌트 최상위에서만 호출 해야 한다. 조건문, 반복문, 중첩 함수 안에서 훅을 호출하면 안 된다. 이와 관련해 궁금한 점은 다음과 같습니다: 개발하다 보면 상태가 많아지고 상태마다 핸들러도 많아지게 되어 코드가 길어지게 됩니다. 그러다 보니 소스코드를 한눈에 파악하기 어려워지는 것 같습니다. 실무에서는 상태별로 핸들러를 묶어서 작성하는 패턴을 많이 쓰나요? 예를 들어: const [count, setCount] = useState(0); const handleChangeCount = () => { ... }; const [name, setName] = useState(''); const handleChangeName = () => { ... }; 이런 방식으로도 구현을 하시는지, 아니면 useState는 최상단에서 묶어 관리하고 handler는 handler끼리 useEffect는 useEffect 끼리 작성하는 것이 일반적인지 궁금합니다.

  • javascript
  • react
  • 웹앱
  • React-Context
  • react-hooks
Jinhee Lee 댓글 2 좋아요 1 조회수 149

데이터 전처리 조언 부탁드립니다!!

미해결

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

안녕하십니까 훌륭하신 강병진님! 질문이 있어서 글 남깁니다! 저는 현재 교내 학교 문서를 RAG를 만들어서 정보를 얻는 것을 구현하던 중입니다. 우선 개인 학생 성적, 수강 데이터들로 교내 졸업 요건을 파악하는 그래프를 구현 하던 중에 정확도 향상을 고민하던 중 조언을 듣고 싶습니다! 현재 '21학번 컴퓨터공학과 졸업요건 알려줘' 라고 임베딩 검색을 할때 k값을 3으로 할때는 다른 학과 정보까지 같이 나옵니다. 그래서 k값을 1로 하면 딱 컴퓨터 공학과에 맞는 정보들만 주지만 공통 졸업 요건 부분들을 파악하지 못합니다. 결국 학교 문서상으로 llm이 판단하려면 공용 졸업요건 + 개별 학과 졸업요건 정보가 같이 주어져야지 잘 판단하는 거 같습니다. 그래서 생각한 방법이 쿼리가 오면 그걸 기반으로 공통 졸업 요건 파악하는 노드, 개별 학과 졸업 요건 파악하는 노드를 만들어서 그걸 generate노드로 줌 데이터 전처리 과정에서 임베딩 할 때 청크를 학과 별로 나눈다음에 메타데이터로 학과 이름을 넣어주고 하나의 retrieve로 k값의 갯수를 늘림 이 정도 방법이 생각나는데 이러한 접근이 올바른지 혹은 더 적절한 방법이 있는지 궁금합니다. 참고 사항입니다!) 현재 구현 그래프 동작은 다음과 같습니다 엔트포인트 호출시 해당 학생 id값으로 db쿼리로 학생 성적 받아와서 성적 리스트와 쿼리를 상태로 가짐. 유저 쿼리로 벡터db invoke값을 context로 담고 generate에서 쿼리, 성적 리스트, 컨텍스트 정보로 llm이 판단 (model: gpt-5-mini) 글 읽어주셔서 감사합니다!!

  • 프롬프트엔지니어링
  • llm
  • ai-agent
  • langgraph
Jh P 댓글 2 좋아요 0 조회수 90

포트 3000에서 listen하는 곳까지 넘어가지 않습니다.

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

초기 세팅에서 "yarn start:dev"실행 시, Nest 앱이 포트 listen까지 잘 되어 '/' path 요청 시 'Hello World!' 문자열을 잘 응답하는 것을 확인했습니다. 하지만 app.module.ts에 타입 ORM 정보를 넣은 후, import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: '127.0.0.1', port: 5432, username: 'postgres', password: 'postgres', database: 'typeormstudy', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {} 실행을 시키면 다음에서 그냥 멈추어 버립니다. [Nest] 21556 - 2025. 11. 16. 오후 11:55:25 LOG [NestFactory] Starting Nest application... [Nest] 21556 - 2025. 11. 16. 오후 11:55:26 LOG [InstanceLoader] TypeOrmModule dependencies initialized +1036ms [Nest] 21556 - 2025. 11. 16. 오후 11:55:26 LOG [InstanceLoader] AppModule dependencies initialized +0ms 왜 타입ORM 설정을 하니 Nest 앱이 3000 포트에서 실행을 하지 못하고 멈추는지 원인을 못 찾겠네요 ㅠ 그래서 [RoutesResolver] 로그가 찍히지 않습니다. cf_sns 프로젝트에서는 잘 넘어갔는데, typeorm study 부분에서 이렇게 막히네요; 딱히 차이는 없는데 이유를 모르겠습니다 ㅠ

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
Mad Programmer 댓글 1 좋아요 0 조회수 102

11강 내용과 12강 내용이 충돌하는 것 같아요.

해결됨

이벤트부터 SPA까지, 상호작용 웹의 필수 엔진 - [DOM 완전 정복 Part 2]

11강에서는 removeEventListener 함수로 리스너를 명시적으로 제거하지 않는 한 요소가 사라지더라도 메모리에 계속 남아 있다고 설명하셨는데요. 12강에서는 요소를 제거하는 방식으로도 리스너를 제거할 수 있다고 해서 내용이 충돌하는 것 같아요.

  • HTML/CSS
  • javascript
  • react
  • web-api
  • dom
hans 댓글 2 좋아요 0 조회수 119

개발자 모드 활성화 시 반응형 처리

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

문득 강의 수강 중에 강사님께서 개발자모드를 활성화하면 전체적인 화면이 반응형으로 되어있는데 쭉 수강하다가 제꺼에서는 지정이 안되있어 어느 챕터를 놓쳤는지 감이 안옵니다ㅜㅜ 혹여나 다른 분들도 비슷한 사례가 있을까싶어 여쭈어봅니다.

  • javascript
  • react
  • node.js
  • 카카오공채-개발
임스헝 댓글 1 좋아요 0 조회수 90

isLoading 기능 추가했는데, 존재하지 않는 일기 입니다.

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

isLoading 기능을 추가했는데 수정하기, 다이어리 페이지에서 새로고침하면 존재하지 않는 일기입니다. 라고 나오네요. https://github.com/pdh9311/onebite-react 작성했던 코드 입니다. import { Route, Routes } from "react-router-dom"; import "./App.css"; import { createContext, useEffect, useReducer, useRef, useState } from "react"; import Diary from "./pages/Diary"; import Edit from "./pages/Edit"; import Home from "./pages/Home"; import New from "./pages/New"; import Notfound from "./pages/Notfound"; function reducer(state, action) { let nextState; switch (action.type) { case "INIT": return action.data; case "CREATE": nextState = [action.data, ...state]; break; case "UPDATE": nextState = state.map((item) => String(item.id) === String(action.data.id) ? action.data : item ); break; case "DELETE": nextState = state.filter( (item) => String(item.id) !== String(action.data.id) ); break; default: nextState = state; } localStorage.setItem("diary", JSON.stringify(nextState)); return nextState; } export const DiaryStateContext = createContext(); export const DiaryDispathContext = createContext(); function App() { const [isLoading, setIsLoading] = useState(true); const [data, dispatch] = useReducer(reducer, []); const idRef = useRef(0); useEffect(() => { const storedData = localStorage.getItem("diary"); if (!storedData) { setIsLoading(false); return; } const parsedData = JSON.parse(storedData); if (!Array.isArray(parsedData)) { setIsLoading(false); return; } let maxId = 0; parsedData.forEach((item) => { if (Number(item.id) > maxId) { maxId = Number(item.id); } }); idRef.current = maxId + 1; console.log(parsedData); dispatch({ type: "INIT", data: parsedData, }); setIsLoading(false); }, []); const onCreate = (createdDate, emotionId, content) => { dispatch({ type: "CREATE", data: { id: idRef.current++, createdDate, emotionId, content, }, }); }; const onUpdate = (id, createdDate, emotionId, content) => { dispatch({ type: "UPDATE", data: { id, createdDate, emotionId, content, }, }); }; const onDelete = (id) => { dispatch({ type: "DELETE", data: { id, }, }); }; if (isLoading) { <div>데이터 로딩중입니다....</div>; } return ( <> <DiaryStateContext.Provider value={data}> <DiaryDispathContext.Provider value={{ onCreate, onUpdate, onDelete }}> <Routes> <Route path="/" element={<Home />} /> <Route path="/new" element={<New />} /> <Route path="/diary/:id" element={<Diary />} /> <Route path="/edit/:id" element={<Edit />} /> <Route path="*" element={<Notfound />} /> </Routes> </DiaryDispathContext.Provider> </DiaryStateContext.Provider> </> ); } export default App; import { useContext, useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import { DiaryStateContext } from "../App"; //커스텀 훅 const useDiary = (id) => { const data = useContext(DiaryStateContext); const [currDiaryItem, setCurrDiaryItem] = useState(); const nav = useNavigate(); useEffect(() => { console.log("useDiary"); const currentDiaryItem = data.find( (item) => String(item.id) === String(id) ); if (!currentDiaryItem) { window.alert("존재하지 않는 일기입니다."); nav("/", { replace: true }); } setCurrDiaryItem(currentDiaryItem); }, [id]); return currDiaryItem; }; export default useDiary;

  • javascript
  • react
  • node.js
  • 카카오공채-개발
padohy 댓글 3 좋아요 0 조회수 101

open AI 플랫폼에서 MCP Server선택시 무한로딩표시만.

해결됨

OpenAI를 활용한 나만의 AI 에이전트 만들기 (Agent Builder, GPT-5, Chatkit, Cloudflare, MCP, Fine Tuning, CoT 등)

https://platform.openai.com/chat/edit?models=gpt-5-nano 여기에서 tools > add 선택, MCP Server를 선택하면, Add Connector 팝업이 뜨는데, 계속 무한로딩되면서 화면에 아무것도 뜨지가 않습니다. 검색해보니 맥os는 시스템설정 > 보안에 가면 MCP관련해서 설정을 열어줘야 한다는데 관련 내용도 보이질 않네요. 혹시 무엇이 문제일까요? ==> 다음날 어떤 작업도 하지 않았는데 저절로 해결이 되었습니다. 어떤 이유로 해결되었는지 모르겠습니다.

  • openai
  • multi-agent
  • llm
  • fine-tuning
  • ai-agent
econo21c 댓글 2 좋아요 0 조회수 168

클래스 vs 인라인 스타일 성능 질문

해결됨

구조 탐색과 조작의 모든 것 - [DOM 완전 정복 Part 1]

안녕하세요. 좋은 강의 감사합니다! 26. 클래스와 스타일을 다루는 가장 강력한 방법 – classList, style, 그리고 리플로우까지 에서 인라인 스타일로 스타일을 바꾸면 리플로우/리페인트가 자주 발생할 수 있어 성능에도 안 좋을 수 있다고 설명하셨는데요. 예시로 들어주신 코드에서는 어차피 자바스크립트 엔진이 싱글 스레드라 클래스든 인라인 스타일이든 모두 반영된 후에, 리플로우/리페인트가 발생하기 때문에 성능적으로는 유의미한 차이가 없을 것 같은데요. 좀 더 구체적인 설명을 해주실 수 있을까요? ChatGPT 답변도 같이 첨부합니다. https://chatgpt.com/share/69181628-34d0-8007-8e81-02401c649370

  • HTML/CSS
  • javascript
  • react
  • dom
  • frontend
hans 댓글 2 좋아요 0 조회수 113

[재질문][그랩님 답변 부탁드립니다]101강

미해결

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

그랩님, 강의 잘 듣고 있습니다. 다름이 아니라 궁금한 사항( =에러 해결방법 ) 이 필요해서 글을 남기게 되었습니다. 101강 에서 Axios 에러(400) 가 안드로이드 스튜디오 에뮬레이터에서 발생 하고 이어 아래의 추가 사진2 에서 보시다시피 502 Bad Gateway가 발생 하여 어떻게 해결 할 수 있는지 에 대해 알고 싶어서 질문 드립니다. 일단 101강 처음부터 ~ 4분 52초까지 그랩님께서 작성하신 소스코드를 똑같이 작성 후 결과 를 보려하는데, 농구공 그림 (세부사항:판매자:그랩,가격,상품명등등) 이 나오지 않아 서 이것을 어떻게 하면 그랩님과 같은 결과를 볼 수 있을지에 대해 여쭈어봅니다. 사진 1 첨부 : 판매되는 상품들 밑에 100강만 들었을 시에 농구공 화면이 잘 나왔으나 101강 4분 52초까지 의 내용의 소스코드를 입력 후 결과값 보면 400 에러도 발생하고 농구공도 안나오게 됩니다. 어떻게 해야 하나요? 사진 2 첨부 : ngrok http 8080후 진행 하면, 아래와 같이 502 Bad Gateway라고 뜨는데, 이 에러 의미와 무엇이 잘못된건지 그리고 어떻게 해결 해야 하는지 답변 주시면 좋겠습니다. 이어서 중간에 아래 사진 과 같은 절차 를 겪었었는데요, 필요할 것 같아 참고 로 스샷을 첨부합니다. axios 설치 후 grab-market-mobile에서 npm start하니 다른 프로세스에의해 포트 8081이 사용 되고 있는데 8082 포트를 대신 쓸거냐는 질문 에서 y or n 하라는데 y하게 되었는데요 , 이 다음에 어떻게 해야 그랩님 강의와 똑같이 잘 작동할 수 있을까요? 더불어서 또 다른 에러가 발생하는데요, 또 다른 에러는 cmd에서 ngrok http 8080 입력 후 포워딩 주소 를 크롬브라우저에 복사 후 붙여넣으면 , 이전 밑에 질문에서는 정상 작동되었으나 지금 은 아래와 같이 바뀐 에러 가 발생 하였습니다. 해결법을 모르기에 아래에 사진을 첨부합니다. 꼭 답변 부탁 드립니다. 그랩님의 답변 부탁 드립니다.

  • HTML/CSS
  • javascript
  • react
  • node.js
  • react-native
  • 머신러닝
  • express
  • tensorflow
isbcom1004 댓글 2 좋아요 0 조회수 201

전자책 목차 오류

미해결

[4주 과정] <밑바닥부터 시작하는 웹 브라우저> 완독 챌린지

안녕하세요. 목차를 살펴보다가 이상한 점을 발견해서 문의합니다. (책 맨 앞의 목차가 아니라 "목차 메뉴"의 출력이 이상해서 문의합니다.) 저는 알라딘에서 전차잭으로 구매했는데 홈페이지 상세 페이지에서는 순서가 제대로 잘 나와있는 것 같은데... 제 전자책에서는 목차가 이상하게 출력됩니다. 챕터10 -> 파트4(300페이지) 챕터14~17까지 순서대로 나오다가 -> 챕터 11~13까지 나옵니다. 이건 해당 구매처로 문의해야 하는 걸까요?

  • javascript
  • python
  • 네트워크
  • frontend
  • web-browser
김구리 댓글 2 좋아요 1 조회수 88

저 강의 들으면서 작성한 코드를 github에 올려도 되나요?

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요. 좋은 강의 들으며 많은 것을 배우고 있어서 감사히 생각하고 있습니다. 그런데 강의 들으면서 작성한 코드 (예를 들면 감정 일기장 코드)를 제 github repository에 public으로 올려도 되나요? 답변해주시면 감사합니다.

  • javascript
  • react
  • node.js
  • 카카오공채-개발
김동욱 댓글 2 좋아요 0 조회수 102

[그랩님 답변 부탁드립니다]101강 Axios 에러와 502 Bad Gateway 질문

해결됨

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

그랩님, 강의 잘 듣고 있습니다. 다름이 아니라 궁금한 사항( =에러 해결방법 ) 이 필요해서 글을 남기게 되었습니다. 101강 에서 Axios 에러(400) 가 안드로이드 스튜디오 에뮬레이터에서 발생 하고 이어 아래의 추가 사진2 에서 보시다시피 502 Bad Gateway가 발생 하여 어떻게 해결 할 수 있는지 에 대해 알고 싶어서 질문 드립니다. 일단 101강 처음부터 ~ 4분 52초까지 그랩님께서 작성하신 소스코드를 똑같이 작성 후 결과 를 보려하는데, 농구공 그림 (세부사항:판매자:그랩,가격,상품명등등) 이 나오지 않아 서 이것을 어떻게 하면 그랩님과 같은 결과를 볼 수 있을지에 대해 여쭈어봅니다. 사진 1 첨부 : 판매되는 상품들 밑에 100강만 들었을 시에 농구공 화면이 잘 나왔으나 101강 4분 52초까지 의 내용의 소스코드를 입력 후 결과값 보면 400 에러도 발생하고 농구공도 안나오게 됩니다. 어떻게 해야 하나요? 사진 2 첨부 : ngrok http 8080후 진행 하면, 아래와 같이 502 Bad Gateway라고 뜨는데, 이 에러 의미와 무엇이 잘못된건지 그리고 어떻게 해결 해야 하는지 답변 주시면 좋겠습니다. 그랩님의 답변을 기다립니다.

  • HTML/CSS
  • javascript
  • react
  • node.js
  • react-native
  • 머신러닝
  • express
  • tensorflow
isbcom1004 댓글 2 좋아요 0 조회수 157

감정일기장 최종완성본 링크는 어디에있나요??

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

감정일기장 최종완성본 링크는 어디에있나요??

  • javascript
  • react
  • node.js
  • 카카오공채-개발
yuljeonjw 댓글 2 좋아요 0 조회수 79

1강에서 도커 설치 중 오류.

해결됨

[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드

완전 초보를 위한 N8N 설치부터 셀프호스팅까지_DOCKER 실습편 입니다. GIHUB 에서 NVIDIA GPU 유저로 복사해서 설치 하려고 하는데.. 세번째 줄 docker compose --profile gpu-nvidia up을 복사하고 엔터를 치면 아래와 같이 나옵니다. C:\N8N\self-hosted-ai-starter-kit>docker compose --profile gpu-nvidia up time="2025-11-13T13:12:52+09:00" level=warning msg="The \"POSTGRES_USER\" variable is not set. Defaulting to a blank string." time="2025-11-13T13:12:52+09:00" level=warning msg="The \"POSTGRES_PASSWORD\" variable is not set. Defaulting to a blank string." time="2025-11-13T13:12:52+09:00" level=warning msg="The \"POSTGRES_USER\" variable is not set. Defaulting to a blank string." time="2025-11-13T13:12:52+09:00" level=warning msg="The \"POSTGRES_PASSWORD\" variable is not set. Defaulting to a blank string." time="2025-11-13T13:12:52+09:00" level=warning msg="The \"POSTGRES_USER\" variable is not set. Defaulting to a blank string." time="2025-11-13T13:12:52+09:00" level=warning msg="The \"POSTGRES_DB\" variable is not set. Defaulting to a blank string." time="2025-11-13T13:12:52+09:00" level=warning msg="The \"POSTGRES_USER\" variable is not set. Defaulting to a blank string." time="2025-11-13T13:12:52+09:00" level=warning msg="The \"POSTGRES_PASSWORD\" variable is not set. Defaulting to a blank string." env file C:\N8N\self-hosted-ai-starter-kit\.env not found: CreateFile C:\N8N\self-hosted-ai-starter-kit\.env: The system cannot find the file specified.

  • n8n
  • 인공지능(ai)
  • rag
  • ai-활용-(ax)
  • ai-agent
  • 카카오공채-개발
  • 카카오공채-서비스
차광호 댓글 3 좋아요 0 조회수 169

web api 에 대해 질문이 있습니다.

해결됨

AI시대의 웹개발 : 비동기 프로그래밍과 데이터 통신 최적화(프롱트 특강)

자바스크립트는 싱글 스레드 언어라고 알고 있습니다. 자바스크립트 자체적으로 실행하지 못하고 Node나 브라우저에서 실행해야 되는데 브라우저에서 실행할 경우 선생님께서 가르쳐주신 콜스택, Callback Queue, WebpAPI 모듈이 EventLoop를 통해 멀티스레드처럼 동작한다고 이해했습니다. 여기서 질문이 있는데요. SetTimeout에서의 콜백이 WEB API에게 던져놓고 시킬 때, 싱글스레드 녀석은 CallStack에서 일한다고 바쁜데 언제 SetTimeout 콜백을 처리하나요? WEB APIs가 콜백을 따로 처리한다는 건 또 다른 스레드가 존재한다는 의미인가요? 그러면 싱글스레드인척하는 멀티스레드인셈인가요?? ㅎㅎ;

  • javascript
  • promise
  • frontend
  • fetch-api
이동훈 댓글 2 좋아요 0 조회수 134

인기 태그

인프런 TOP Writers

주간 인기글