본문 바로가기

공부/javascript

[비동기] for문 Promise, 배치식 프로그래밍 고민

2020/05/24 - [취미 개발] - 유튜브 댓글 가지고 놀기(2

 

1. 상황

Youtube 영상의 댓글을 불러올 때 API를 이용합니다. 최대 100건씩 N page를 수행합니다..

이 때 반복적인 100건 호출에 대한 N건 실행을 하려고 합니다.

 

2. 코드

 

  • < 예상 시나리오 >

  • (1) getVideoComent() 부터 ~ 다음 Promise까지 순차적으로 수행

  • (2) <done !!! yet > 출력

  • (3) ++page 카운터 동작

  • (4) page N 건 도달시, <done!!! all > 동작 >

 

3. 틀렸습니다.

실제 수행은, 

  • page 카운터대로 빠르게 실행되었고

  • Promise 동작은 실행된 후 천천히 나중에 수행되었습니다. : 비동기식 프로그래밍

 

어떻게 할 수 있을 지 고민하고 있습니다.

그래서 한 것이 "page 카운터 변수를 Promise 내부 동작의 끝 then에 두면" 되지 않을까 생각했습니다.

아래는 결과입니다.

 

page 카운터기를 Promise 끝 동작에 뒀을 경우,

 

무한 루프를 돌았고, 컴퓨터가 뻗었습니다.

Promise를 갓 적용하고 있기 때문에 뭐가 빠진줄 잘 모릅니다. 도와주실분 있으시면 언제든 댓글 환영입니다.

 

4. 코드 주소

https://github.com/ukiKwon/youtube-country-comment-finder/issues/2

 

[async programming] How to execute N "consecutive Promise method" · Issue #2 · ukiKwon/youtube-country-comment-finder

This is /src/public/script/module_op.js in this project. var page = 0; for (; page<maxpage;page++;) {="" let="" nextpage="" ;="" getvideocomment(nextpage)="" .then(function(comment)="" return="" getbri...<="" p=""> </maxpage;page++;)>

github.com