묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모던 자바스크립트(ES6+) 기본
[제네레이터함수, yield를 활용한 무한 덧셈] 식, result += yield result를 어떻게 이해 해야할까요???
위 식에서 result의 값을 result로 할당(+=)하는 듯?한 식을 어떤 논리로 이해해야할지 난감합니다. 예를 들어, 비슷한 구조로, const result = yield one + two console.log(result) 라는 식이 있을때, 1번째 next() 일 경우 => one + two의 값이 반환됨 2번째 next() 일 경우이면서 인자가 들어간 next로 호출될때 (예: next(20)) => next의 인자, 20이 result에 할당되어, result는 20의 값을 가짐 =>console.log(result) // 20 이라고 이해하고 있습니다. 즉. one + two의 값이 result에 할당되는 것 같지만, 그렇지 않고, 분리가 되어, 호출되는 next의 인자값이 할당되는 것으로 이해하고 있습니다. 만약 간단하게, yield result++ 일 경우라면, 증감된(++) result가 반환되는거로 이해하면 되는데요, 반면 result +=yield result;은 위의 식 처럼이라면, yield 의 표현식인 (우측의) result가 반환 될 것같은데, 그게 아니라 이전 result에 이후 result가 더해진 새로운 result(result+=result)가 출력이 됩니다. (제가 알고 있는 지식으로) 1.yield 우측의 표현식의 반환값은 좌측의 변수로 할당되지 않고 2.그 이후에 호출되는 next()메서드에 인자로 넣은 값을 갖는 거라고 알고 있는데요 해당 소스를 크롬 디버거로 돌리면, result의 값이 next메서드에 인자(10,20,30,40)로 들어간 값이 누적해서 더해지고 있습니다. 제네레이터 함수는 이전 값을 기억하고 있어 이후의 값과 연산이 가능한 건 알겠는데, yield 표현식의 값이 할당되는 건 아닐텐데,,, '할당' 되는 모습"인거 같아 "너무 혼란스럽습니다...ㅠ 위의 식을 어떤 논리로, 흐름으로 이해하면 좋을까요??.. 위 식을 강의 진행해주신 것처럼 풀어 설명 해주실 수 있을까요? 부탁드립니다!!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
const result = yield call(logInAPI)
function* logIn(action) { try { const result = yield call(logInAPI); yield put({ type: "LOG_IN_SUCCESS", data: result.data, }); } catch (err) { yield put({ type: "LOG_IN_FAILURE", data: err.response.data, }); } } const result = yield call(logInAPI); 항목 질문인데요 제너레이터 함수 문법은 yield까지 실행하고 종료해서 next()로 다시 함수내 다음문 실행을 거듭하는 특이한 함수로 알고 있는데요 yield로 받아지는 식별자 const result는 .next(인자)에서의 인자가 다음번 실행때 들어가는것 아닌가요? yield에서 만든 값은 이터레이터의 value값이 되는거고 식별자 result에 포함되지는 않다고 알고 있는데 어떻게 이해하는게 좋을까요