[개발이야기] Java Script 반복문에서 딜레이 주기

in zzan •  5 years ago 

안녕하세요 꿀푸입니다.


Steem API 사용하여 자동으로 스테이킹하는 기능을 구현 중입니다.

for 반복문에서 setTimeout 함수를 써서 블록 생성 주기인 3초 마다 customJson 요청하는 기능을 만드는 중이고 아래와 같이 코드를 작성하였습니다.
image.png

위 코드를 실행하면 i 라는 변수 값이 0 부터 하나씩 증가가 되어 timeout 시간이 3초, 6초, 9초, ... 순으로 증가 될 줄 알았는데 실제 실행 결과는 3000ms, 33000ms, 63000ms 동안 delay가 발생을 하네요.

내용 검증을 위해 아래와 같이 소스 변경하여
image.png

출력된 값을 확인해보면
image.png

i 값을 문자열로 인식을 하여 결과 값이
3000 * 01 = 3000
3000 * 11 = 33000
3000 * 21 = 63000
으로 계산이 되고 해당 시간 만큼 지연 됩니다.변수를 typeof 로 찍어 보면 string으로 표시가 되구요.

구글에서 setTimeout 관련하여 찾은 소스 대부분이 위와 같이 구현을 하였길래 그대로 썼었는데 잘 돌아 가는지 궁금하네요. 아니면 최근에 무언가 바뀌었는지 모르겠지만 일단 문제 해결을 위해 해당 변수를 숫자형으로 변경 후 해결을 하였습니다.

image.png

잘됨!


async, await 만 이해를 하면 될줄 알았는데 파면 팔수록 새로운게 나오네요.
비동기 방식으로 돌아가는걸 이해하는 과정이 재미(??) 가 있습니다. ㅎㅎ

for 문도 비동기 처리되는걸 보고 깜놀...

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

비동기사랑 노드 사랑입니다.ㅋㅋ
그리고 꿀푸님 node-cron이나 node-schedule 사용하면 더 쉽습니다.
https://github.com/node-schedule/node-schedule

저 코드가 node-cron 안에 들어갑니다~! 그래서 생각을 안하고 있었는데 외부 패키지 써서 구현 하는것도 방법이네여...ㅋㅋㅋ

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

jcar토큰 보팅합니다.

For 문이 비동기는 아니고요,
setTimeout 의 인자인 함수가 비동기로 처리됩니다.

오~! 생각해보니 그르네요 비동기면 수정한 코드도 제대로 안돌아야 정상이겠군요 ㅎㅎ

Posted using Partiko iOS