시냅스

TIL : JavaScript { Generator } 본문

JavaScript

TIL : JavaScript { Generator }

ted k 2021. 11. 6. 09:41

Generator

  • 원하는 만큼 코드 실행을 시작하거나 중지하는 함수 ( 쓰레드 처럼 이용하고 싶은건가...? )
  • 비동기 코드와 작성하면 효과적!!

용례

  • function 키워드에 * 을 붙여주고
  • 반환할 콘텐츠에 yeild를 불여주고
  • next() 로 실행!
  • 콘텐츠를 전부 호출한 이후에 재실행하면 undefined 와 done: true 반환!
  • return을 사용해 값을 전달 후 함수를 종료할 수 있다.
  • throw를 사용해 오류를 잡고 함수 종료!

Promise와 함께 사용하면 효과적이다!!

const myPromise = () => new Promise((resolve) => {
	resolve('our value is...')
})

function* gen() {
  let result = ""
  // 프로미스를 반환
  yield myPromise().then(data => {result = data})
  // 프로미스의 결과를 기다린 후 이 값을 사용
  yield result + ' 2'
}

// 비동기 함수를 호출
const asyncFunc = gen()
const val1 = asyncFunc.next()
console.log(val1)

// { value: Promise, done: false }
// 프로미스가 완료되기를 기다린 후 .next()를 호출
val1.value.then(() => {
	console.log(asyncFunc.next())
})
// {value: "our value is ...2", done: false}

'JavaScript' 카테고리의 다른 글

TIL : JavaScript { Proxy }  (0) 2021.12.03
UUID 사용법  (0) 2021.11.27
TIL : JavaScript { Symbol, Class }  (0) 2021.11.05
TIL : JavaScript { this, arrowFunction, spread syntax }  (0) 2021.11.03
Comments