안녕하세요 ayogom 입니다.
어제 [NodeJS] API 사용 법 8편 스팀 블럭 모니터링 하기 2편 포스팅을 올리며, 내용 중에 이러한 언급을 했는데요.
사실 이 코드에는 한가지 매우 불편한점이 하나 있는데요 어떻게 보면 nodejs의 특성이 묻어납니다. 내일은 이 부분에 대해서 이야기를 좀 드리겠습니다.
이 이야기는 조금 더 거슬러 올라가면 Nodejs 가 무엇인지 그리고 어떻게 설치 하는지? 에서도 볼 수 있습니다.
그것은 바로 callback 을 동작시켰을 때
동시다발 적으로 코드가 돌아간다는 점이죠
이제 다시 어제 소스코드를 한번 봐볼까요?
var steem = require('steem');
steem.api.streamBlockNumber('head',function(err, result){
console.log(err, result);
steem.api.getBlock(result ,function(err, result){
for (var i=0;i<result.transactions.length;i++){
console.log(result.transactions[i].operations[0][0]);
}
})
});
현재 이 코드에는 streamBlockNumber
과 getBlock
이렇게 총 2개의 콜백이 있습니다.
코드를 살펴보면 먼저 streamBlockNumber
이 수행되고 그 수행이 끝나기 전에 다시 한번 콜백을 호출하게 됩니다. 이걸 만약 일반적인 C와 같이 streamBlockNumber
이 종료 되고 그 다음 getBlock
을 아래와 같이 수행시킨다면 그 결과값이 다르게 될 것입니다.
var steem = require('steem');
steem.api.streamBlockNumber('head',function(err, result){
console.log(err, result);
});
steem.api.getBlock(result ,function(err, result){
for (var i=0;i<result.transactions.length;i++){
console.log(result.transactions[i].operations[0][0]);
}
});
아마도 어쩌면 값이 동일하게 나올 수도 있고, 안나올 수도 있습니다. 나온다면 뭐야? 똑같잔아 생각할 수 있지만 그건 그냥 해당 callback 함수가 너무 빠르게 끝나서 발생하는 우연일뿐입니다. 다음에 동일한 코드를 동작시켰을때 안되는 경우가 생길 수 있습니다.
그게 Nodejs 입니다.
물론 이 것을 해결하는 방법이 있습니다. 바로 promise,async,await
를 사용하는 방법인데, 해당 방법은 추후에 다시 다룰 것입니다. 지금 설명해봐야.. .아마도 크게 와닿지 않으실껍니다 ㅎㅎ 그래도 잊을만 하면 다시 한번 소개해드리겠습니다.
내일은 간단한 댓글 봇 혹은 보팅 봇을 만들어 보겠습니다.
작성 예정인 글 List
- Nodejs 를 이용한 스팀 API 사용해보기 (계속)
- SCT 포스팅피 납부 방법
- 니트로스별(SCT, ZZAN, AAA 등) 설정 확인하는 방법
누군가에게는 도움이 될 수 있는 글
스팀잇 기본 이야기
- 복잡한 키&패스워드는 그만 손쉬운 로그인 키체인의 사용법
- 계정 옆의 숫자 평판? "reputation" 이란
- [요청] 스팀엔진 사용방법
- 스팀잇 내부 거래 사이트, 마켓
- 오랜만에 스팀잇에 돌아왔더니 로그인이 안됩니다 (Logging in with non-posting key)
- 스팀잇에 기존 사용하던 트론 지갑을 연결하는 방법
- 스팀 체인의 패스워드 / 키의 역활
- [요청] 스팀엔진 Explorer 가 접속이 되지 않아요
- Steemit의 태그 사용법과 커뮤니티스 사용법
- Steemit 프로필 변경 방법
- 스팀파워 임대가 안된다 왜?
- 스팀잇 계정 만들기
- 스팀잇 저장 보상의 종류와 뭐가 좋을지
- 스팀잇 속닥속닥 비밀 메모 사용하기!
- 스팀/스달 입금, 출금 그리고 업비트 이용방법
- 갑자기 steemit 사이트가 접속이 안된다면?
- 스팀잇 내에 붉은 글씨 사용법
- Steem체인의 또하나의 커뮤니티 "zzan"
- Steem체인의 또하나의 커뮤니티 "sct"
- 스팀잇 지갑에 접속이 되지 않을 때
- 스팀잇 글 작성 문법 [마크다운편]
- 스팀잇 글 작성 문법 [HTML]
- 스팀잇 가독성 및 작성을 편하게 해주는 "Steemit.com Enhancer" 툴
스팀잇 심화 이야기
- 스팀의 인플레이션에 대해서
- 하루에 스팀 리워드 풀에 포함되는 스팀은 얼마나 될까?
- 하루에 도대체 어느정도의 스팀은 생성될까요?
- 내가 보팅 했더니 보상이 떨어졌다? 왜?
- 스팀달러가 1달러를 유지하는 방법
- 글이 써지지 않아요 왜? Resource Credits!? Your transaction failed to process
- 스팀잇 에서의 $ 는 USD(미국달러) 인가요?
- 스팀은 DPOS 기반의 블록체인입니다. 그럼 DPOS가 뭔가요?
- 증인에 역활은 무엇일까
- 스팀 증인 노드 세팅하기 1탄
- 스팀 증인 노드 세팅하기 2탄
- Steem Node 정리 (Full node 1편)
- Steem Node 정리 (Full node 2편) -설치
- 증인 노드 feed price 업데이트 방법
[US$80.50](▼16%)[SONGJING]SONGJING SJ-125E 제습기 / 송징 SJ-125E 제습기 / 36평적용 / 165W 고출력 / 대용량 물탱크 / 관부가
WWW.QOO10.COMDownvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
start success go! go! go!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@banguri님이 당신을 멘션하였습니다.
https://www.steemit.com/@banguri/6-1
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
글에서 말씀하신 콜백은 일반 함수이고, 그 함수안에 인자로 받는게 콜백함수라고 하는게 정확하겠습니다. 참고로 콜백함수는 우리가 호출하는게 아니라 시스템이 call back하기 때문에 콜백함수로 불립니다. 글에서 조금 분명하지 않은 부분이 있어서 댓글답니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
첨언 감사합니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
항상 양질의 포스트 잘 보고 있습니다. 감사합니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
저도 정확한 이해를 하기 위해서 다시 한번 문의를 드립니다 ㅎㅎ
해당 코드 내에서 Steem 라이브러리를 콜백하기 때문에
streamBlockNumber과 getBlock 을 콜백함수로 이해하고 있는데요.
그 이해가 맞는거죠?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
streamBlockNumber의 함수는 일반함수입니다. 그 안에 넣는 인자를 보시면 2번째에 function이 들어갑니다. 이게 콜백함수입니다. streamBlockNumber함수가 즉시 블락넘버를 얻어오는 함수가 아니라서 결과가 나왔을 때 처리해주는 함수를 지정해 준 것입니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@ayogom transfered 5 KRWP to @krwp.burn. voting percent : 4.19%, voting power : 59.93%, steem power : 1779883.64, STU KRW : 1200.
@ayogom staking status : 700 KRWP
@ayogom limit for KRWP voting service : 0.7 KRWP (rate : 0.001)
What you sent : 5 KRWP
Refund balance : 4.3 KRWP [54242960 - 2b415b8a2750f8e573d26ca29a09b9e8f7594dda]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
우리 회사 막내가 요즘 promise 개념 이해못해서 지옥에 빠지고 있던데 ..
node 개발할때 가장 놀리기 좋은 주제죠. ㅋㅋㅋ
지옥의 됐다 안됐다.ㅋㅋㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
ㅋㅋㅋㅋㅋㅋ 사실 저도 한동안 그 개념을 이해하고싶지 않아서 (?)
콜백 지옥으로 코드를 짜다가 도저히 못봐주겠어서... 최근에 억지로(?) 이해를 했습니다
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@yonggyu01님이 당신을 멘션하였습니다.
https://www.steemit.com/@yonggyu01/60
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit