안녕하세요 꿀푸입니다.
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 문도 비동기 처리되는걸 보고 깜놀...
비동기사랑 노드 사랑입니다.ㅋㅋ
그리고 꿀푸님 node-cron이나 node-schedule 사용하면 더 쉽습니다.
https://github.com/node-schedule/node-schedule
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
저 코드가 node-cron 안에 들어갑니다~! 그래서 생각을 안하고 있었는데 외부 패키지 써서 구현 하는것도 방법이네여...ㅋㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
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.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
jcar토큰 보팅합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
For 문이 비동기는 아니고요,
setTimeout 의 인자인 함수가 비동기로 처리됩니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
오~! 생각해보니 그르네요 비동기면 수정한 코드도 제대로 안돌아야 정상이겠군요 ㅎㅎ
Posted using Partiko iOS
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit