안녕하세요 꿀푸입니다.
Steem API 사용하여 자동으로 스테이킹하는 기능을 구현 중입니다.
for 반복문에서 setTimeout 함수를 써서 블록 생성 주기인 3초 마다 customJson 요청하는 기능을 만드는 중이고 아래와 같이 코드를 작성하였습니다.
위 코드를 실행하면 i 라는 변수 값이 0 부터 하나씩 증가가 되어 timeout 시간이 3초, 6초, 9초, ... 순으로 증가 될 줄 알았는데 실제 실행 결과는 3000ms, 33000ms, 63000ms 동안 delay가 발생을 하네요.
내용 검증을 위해 아래와 같이 소스 변경하여
출력된 값을 확인해보면
i 값을 문자열로 인식을 하여 결과 값이
3000 * 01 = 3000
3000 * 11 = 33000
3000 * 21 = 63000
으로 계산이 되고 해당 시간 만큼 지연 됩니다.변수를 typeof 로 찍어 보면 string으로 표시가 되구요.
구글에서 setTimeout 관련하여 찾은 소스 대부분이 위와 같이 구현을 하였길래 그대로 썼었는데 잘 돌아 가는지 궁금하네요. 아니면 최근에 무언가 바뀌었는지 모르겠지만 일단 문제 해결을 위해 해당 변수를 숫자형으로 변경 후 해결을 하였습니다.
잘됨!
async, await 만 이해를 하면 될줄 알았는데 파면 팔수록 새로운게 나오네요.
비동기 방식으로 돌아가는걸 이해하는 과정이 재미(??) 가 있습니다. ㅎㅎ
for 문도 비동기 처리되는걸 보고 깜놀...