-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
01. Promise · GitBook #9
Comments
왕... 너무 어렵당..ㅎㅎ |
2019.09 개정판 사서 읽기전에 2015 JS 주입중입니다. 2018년에 제이쿼리를 시작했는데 덕분에 탈 제이쿼리 할수있을거같아 무지 기쁩니다 ㅠㅜ |
설명이 너무 어렵네요 그리고 세부적인 설명없이 너무 혼자 하시는듯한 느낌입니다. 포괄적인 설명말고 좀 더 풀어서 친절한 설명으로 부탁드립니다. |
안녕하세요, 많이 답답하셨을텐데, 우선 늦은 답변에 대하여 사과드립니다. 말씀 주신 문제점들 반영하여 해당 강의는 업데이트하도록 하겠습니다.질문들에 대한 답변입니다..
초반의 increaseAndPrint 함수에선 첫번째 파라미터 n에 숫자를 받아오고 두번째 파라미터에선 n에 1을 더한 결과값을 인자로 넣어서 호출 할 함수를 받아옵니다. increaseAndPrint가 호출되고나서 또 다시 자기 자신을 호출하기 위해 연달아서 increaseAndPrint가 작성됐습니다. 해당 코드에서는 <increaseAndPrint 호출 -> n 에 1 더함 -> 더한 값을 가지고 다시 increaseAndPrint 호출>이 값이 5가 될때까지 반복됩니다.
Promise를 만들때에는 resolve와 reject를 파라미터로 받아오는 함수를 인자로 넣어주어야 합니다. async/await 부분에서 질문주셨던건데, reject는 사용하지 않는다면 생략 될 수 있습니다. resolve 는 처리가 성공됐을때 결과 값을 설정해주고 reject는 실패됐을 때 오류를 설정해줍니다.
Promise 의 catch 함수는 앞서 만든 Promise 에서 reject 한 값을 받아올 때 사용합니다. 여기서 e 는 reject 에 인자로 넣어준 값입니다. console.error는 console.log 와 달리 빨간색으로 나오게 됩니다. 콘솔에서 에러가 난 것을 더욱 쉽게 알 수 있게 해주죠.
콜백을 없앤 이유는 우리가 콜백을 통해서 그 다음 처리 할 작업을 넣어주지 않고 Promise 의 then 을 통해서 하기 위함이었습니다.
error 에 ValueIsFiveError 라는 이름을 설정해주기 위함이었습니다.
increaseAndPrint(0)의 결과 1을 .then 의 파라미터 n으로 받아와서 다시 increaseAndPrint를 호출합니다. .then 에서 Promise 를 반환하면 .then 을 다시 연달아서 사용 할 수 있습니다.
저장할때마다 코드가 자동으로 다시 실행됩니다. 그런데 그 과정에서 이미 실행된 Promise들이 사라지지 않고 잔존해있어서 저런 현상이 발생했었고 중요한건 아니여서 그냥 넘겼었습니다. 다만, 설명을 하지 않았을때 혼란을 줄 거라 예상을 못했었네요.
Node 에서 프로미스에서 발생한 에러를 .catch 하지 않으면 "UnhandledPromiseRejectionWarning" 라는 경고 메시지가 뜹니다. 브라우저에서는 "Uncaught (in promise) ValueIsFiveError" 라는 오류가 뜹니다.
catch를 한 이유는, 에러가 발생했을때 특정 작업을 하기 위함입니다. catch를 안했을땐 "Uncaught (in promise) ValueIsFiveError" - ValueIsFiveError 가 잡히지 않았다. 했을땐 "ValueIsFiveError" 라고 나타납니다. 즉 콘솔에 출려되는 결과가 다릅니다.
이 부분 설명이 모호하긴 했네요. 제가 그냥이란 말을 저렇게 많이 하는지도 몰랐습니다..ㅎㅎ; .then 에서 새로 함수를 선언하지 않고 increaseAndPrint 를 넣어주면 앞서 호출한 increaseAndPrint 의 결과값을 다시 increaseAndPrint의 인자로 넣어서 호출하게 됩니다. 파라미터를 여러개 받아와야 하는 경우에는 함수를 새로 선언해야 합니다. |
강의가 지루하진 않고 어려운 건 사실인데 몇분이 강의 내용만 가지고 이해가 안된다고 찡찡 거리는 모습은 보기 불편하네요. |
배움이라는 것은 원래 어려운 것같습니다. 그리고 그만큼 내공이 쌓여야 되구요. |
이 강의가 애초에 리액트를 위한 자바스크립트 모던 강의 아니에요? |
아 그리고 기초가 부족하신거 같아서 여기 아주 잘 되어 있어요^^ |
질문에 관해서 제가 생각했을 때는 질문 기능 없이 강의를 만든 패스트캠퍼스 잘못이 큰 거 같습니다.... |
답변하신 @velopert 님, 어디서 어떻게 이해가 안 가고 그 부분 설명이 강의자에 의해 덧붙여지고 |
안녕하세요. 저는 디자인 분야에 있다가 넘어온지 얼마 안된 뉴비이고 현재 패캠에서 벨로퍼트님 강의를 시청중인데요. 위에 @JeoungSoungHun054 님이 하셨던 질문들이 날카로우신 말투긴 하셨으나 거의 제가 궁금했던 질문들이었어요. 특히 왜 resolve/reject를 갑자기 쓰는지, catch는 왜 나오는지 전혀 이해가 안갔습니다. 구글에서 찾아보기는 했지만 사실 초보자에게 구글에 검색해서 보는 것 자체가 습관이 되어있지 않기도 하고, 구글에 검색해서 게시글을 봐도 이해가 안되는 경우도 많아 시간이 많이 지체되는 것이 사실입니다. 모든 것을 세세하게 설명하기에는 초보자도 강의가 짧다는 정도는 알고 있습니다. 단지 사용하기 전에 왜 사용하는지에 대해 정확히는 설명해주어야 한다고 생각합니다. 그래야 그것에 관해 구글링을 하지요. 저 또한 강의를 몇번씩 돌려가며 보았지만 이해 안되는 것은 마찬가지였습니다. 당연하겠죠 알고리즘 자체가 이해안가는데 몇번 돌려본다고 이해가 될까요. 단지 내가 이 수업 중에 어느 부분을 잘 모르겠다 -> 구글링 해봐야지 하는 프로세스로라도 넘어가게는 설명해주셔야 하지 않을까요. 위에 @JiHoon777님이 말씀하신 것처럼 이건 비단 벨로퍼트님의 문제라기보다 패스트캠퍼스에 질문 기능이 없는 게 너무 큰것 같습니다. 매번 강의가 이해 안될때 마다 이 사이트로 들어와서 댓글을 찾아보아야 하는게 좀 어이없긴 합니다. 자랑은 아니지만 저를 비롯한 초보자에겐 단어 하나 하나 이해하고 정의내리는 것, 그리고 알고리즘을 이해하는 것 그 어떤 것도 쉽지 않습니다. 초보자의 마음을 100% 이해하기는 쉽지 않으시겠으나, 최대한 배려해 주셨으면 하는 바램입니다. 강의 잘 듣고 있습니다 벨로퍼트님^^ |
강의 소개 강의 대상 자바스크립트 복습하는 사람이 아니고서는 아무리 생각해도 비약적으로 갑자기 어려워졌고 이해도 안 가는 건 사실인데 참…. 리엑트를 위한 자바스크립트 모던 강의 라고 하면서 갑자기 이거 이해 못하면 리엑트 배울 자격도 없다 하고. |
@ghost |
ㅁㄴㅇㄹ |
function increaseAndPrint(n) { increaseAndPrint(0) 전 이글의 마지막 부분이 헷갈려서요.. |
-- 상단위에 써있네요..함수를 넣어주기 .then 에서 새로 함수를 선언하지 않고 increaseAndPrint 를 넣어주면 앞서 호출한 increaseAndPrint 의 결과값을 다시 increaseAndPrint의 인자로 넣어서 호출하게 됩니다. 파라미터를 여러개 받아와야 하는 경우에는 함수를 새로 선언해야 합니다. |
강의 잘듣고 있습니다. 핵심 내용만 전달하다보니 디테일한 부분에서 불만사항이 생기는것 같네요... |
강의가 잘 이해안되시는 분들은 |
코맨트 보다보니... 음... |
날카롭게 제가 코멘트 단 부분 죄송하다는 말씀드립니다. |
비동기-동기 라는 개념이 OS적인 개념이였구나... |
이 코드에서 reject(error); 를 reject(error.name); 으로 바꿔야 |
22.03.26 |
22.08.29 |
01. Promise · GitBook
undefined
https://learnjs.vlpt.us/async/01-promise.html
The text was updated successfully, but these errors were encountered: