이런저런 프로그램을 실습차원에서 짜보고 있는데, 비동기 함수를 사용하는데 어려움이 있네요. 대부분의 함수들이 순차 처리가 아니다보니 툭하면 괄호안에 괄호가 수차례 겹치는 일이 다반사입니다. 또 성공 또는 실패의 결과에 따라 후속처리를 하다보면 괄호가 나무가지 퍼져 나가듯이 복잡해 지기도 하구요. async 프레임웍을 쓰면 된다던가, setTimeout으로 실행시간을 조절하라는 글들이 보이기는 하는데, 비교적 초보자가 공부할만한 한글로 된 자료가 있는지 궁금합니다. 어차피 개인적으로 사용할 프로그램들이라 처리속도가 중요하지는 않은데, python같은 언어처럼 순차적으로 실행되는 방법이 있으면 좋겠네요. ^^ 여담이지만 function(){() function(arg, arg, function){...}(arg).then(... 이런식의 문법은 정말 이해도 안가네요. 자바스크립트가 홈페이지에 꽃잎 날리는 용도로만 알았는데 말이죠. ㅎㅎ
author | minari |
---|---|
permlink | node-js |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"app":"steemkr/0.1","format":"markdown"} |
created | 2017-08-22 06:34:06 |
last_update | 2017-08-22 06:34:06 |
depth | 0 |
children | 7 |
last_payout | 2017-08-29 06:34:06 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 9.333 HBD |
curator_payout_value | 2.843 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 479 |
author_reputation | 18,256,774,154,134 |
root_title | "node.js의 비동기 처리에 대한 쉬운 자료가 있을까요?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 12,506,481 |
net_rshares | 2,920,374,426,893 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
cererimi | 0 | 180,663,484 | 100% | ||
jojogoretasar | 0 | 171,406,584 | 100% | ||
afinas | 0 | 513,979,985 | 100% | ||
koralls | 0 | 519,877,078 | 100% | ||
donat1k | 0 | 517,957,018 | 100% | ||
stonewalker | 0 | 520,430,091 | 100% | ||
elenal | 0 | 520,309,482 | 100% | ||
lancekimbrough | 0 | 521,965,879 | 100% | ||
woosungchoi | 0 | 6,723,875,202 | 1% | ||
asbear | 0 | 6,659,556,422 | 100% | ||
ijvi7ipejf38 | 0 | 608,182,947 | 100% | ||
oliverall | 0 | 610,267,872 | 100% | ||
mccormick | 0 | 1,127,366,635 | 100% | ||
alexandrone | 0 | 1,134,546,046 | 100% | ||
d7795 | 0 | 3,519,499,000 | 100% | ||
minari | 0 | 284,546,297,903 | 100% | ||
denfedoov | 0 | 1,129,400,979 | 100% | ||
clarkgold | 0 | 167,927,874,225 | 50% | ||
miso | 0 | 367,493,336,068 | 100% | ||
zuric | 0 | 88,498,203 | 100% | ||
pivo | 0 | 573,285,056 | 100% | ||
krilkach | 0 | 585,446,400 | 100% | ||
zanopiam | 0 | 600,934,400 | 100% | ||
malechniki | 0 | 594,739,200 | 100% | ||
koeac | 0 | 588,544,000 | 100% | ||
vovis | 0 | 1,108,432,683 | 100% | ||
phane | 0 | 600,934,400 | 100% | ||
romanostims | 0 | 607,170,062 | 100% | ||
miyutshi | 0 | 604,032,000 | 100% | ||
slab | 0 | 601,014,468 | 100% | ||
mchagiev | 0 | 648,500,828 | 100% | ||
yasnanata | 0 | 1,131,633,191 | 100% | ||
hangang | 0 | 316,679,934,438 | 100% | ||
lemona | 0 | 466,888,717,902 | 100% | ||
days | 0 | 322,184,257,968 | 100% | ||
nodejs | 0 | 316,816,027,085 | 100% | ||
crema | 0 | 316,631,339,748 | 100% | ||
subak | 0 | 322,172,249,869 | 100% | ||
trofimegor | 0 | 1,154,838,665 | 100% | ||
alsherbin | 0 | 1,154,838,519 | 100% | ||
bijif | 0 | 1,108,406,367 | 100% | ||
kyfas | 0 | 1,149,028,002 | 100% | ||
pebef | 0 | 1,154,830,539 | 100% |
이야기하신 then()은 promise 기반 직렬화 기법인데, 어느정도 써보시면 익숙해 집니다. 이 방법의 장점은 현재 브라우저에서도 사용 가능하다는 것. Q나 Bluebird 라이브러리 사용하시면 더 쉽습니다. 백엔드에서만 구동하실거고, NodeJS 버전 제약 없으신가요? 그러면 NodeJS 7 이상 쓰시면 Javascript ES7의 coroutine을 쓰실수 있습니다. 신세계를 경험하시게 될겁니다. Coroutine이란 async/await 를 사용하는 코딩기법입니다. 아래 글을 한번 보세요. 앞으론 모든 Javascript 코드가 Coroutine기반으로 바뀌게 될겁니다. 아래글 찬찬히 읽어보세욥. http://proinlab.com/archives/2138 그리고 ES7 코드도 NodeJS의 Babel 라이브러리로 컴파일하면 브라우저에서 구동가능한 자바스크립트 생성이 가능합니다.
author | asbear |
---|---|
permlink | re-minari-node-js-20170822t070334286z |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"links":["http://proinlab.com/archives/2138"],"app":"steemit/0.1"} |
created | 2017-08-22 07:03:36 |
last_update | 2017-08-22 07:03:36 |
depth | 1 |
children | 3 |
last_payout | 2017-08-29 07:03:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.053 HBD |
curator_payout_value | 0.002 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 450 |
author_reputation | 76,617,948,082,616 |
root_title | "node.js의 비동기 처리에 대한 쉬운 자료가 있을까요?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 12,508,170 |
net_rshares | 13,771,895,651 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
nhj12311 | 0 | 13,771,895,651 | 50% |
https://babeljs.io/ 그냥 여기서 코딩하는 것이 편할 것 같습니다... ^^
author | kdj |
---|---|
permlink | re-asbear-re-minari-node-js-20170822t070831468z |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"links":["https://babeljs.io/"],"app":"steemit/0.1"} |
created | 2017-08-22 07:08:33 |
last_update | 2017-08-22 07:08:33 |
depth | 2 |
children | 1 |
last_payout | 2017-08-29 07:08:33 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 50 |
author_reputation | 4,188,781,313,300 |
root_title | "node.js의 비동기 처리에 대한 쉬운 자료가 있을까요?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 12,508,427 |
net_rshares | 0 |
문자열 만들기가 정말 좋군요. 감사합니다.
author | minari |
---|---|
permlink | re-kdj-re-asbear-re-minari-node-js-20170822t084436080z |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"app":"steemit/0.1"} |
created | 2017-08-22 08:44:36 |
last_update | 2017-08-22 08:44:36 |
depth | 3 |
children | 0 |
last_payout | 2017-08-29 08:44:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 23 |
author_reputation | 18,256,774,154,134 |
root_title | "node.js의 비동기 처리에 대한 쉬운 자료가 있을까요?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 12,514,855 |
net_rshares | 0 |
감사합니다~ 잘 보겠습니다.
author | nhj12311 |
---|---|
permlink | re-asbear-re-minari-node-js-20170822t071218682z |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"app":"steemit/0.1"} |
created | 2017-08-22 07:12:18 |
last_update | 2017-08-22 07:12:18 |
depth | 2 |
children | 0 |
last_payout | 2017-08-29 07:12:18 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 15 |
author_reputation | 24,459,544,840,580 |
root_title | "node.js의 비동기 처리에 대한 쉬운 자료가 있을까요?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 12,508,634 |
net_rshares | 0 |
대세로는 promise 을 써얄거 같지만 async 는 사용하기 편합니다. 순차 실행을 원하시면 async.waterfall 이나 async.series 정도만 보시면 될 거 같네요. ㅎ
author | clarkgold |
---|---|
permlink | re-minari-node-js-20170822t100912771z |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"app":"steemkr/0.1"} |
created | 2017-08-22 10:09:12 |
last_update | 2017-08-22 10:09:12 |
depth | 1 |
children | 0 |
last_payout | 2017-08-29 10:09:12 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 104 |
author_reputation | 8,456,825,122,453 |
root_title | "node.js의 비동기 처리에 대한 쉬운 자료가 있을까요?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 12,519,924 |
net_rshares | 0 |
이 비디오가 괜찮아 보이네요... https://www.youtube.com/watch?v=s6SH72uAn3Q
author | kdj |
---|---|
permlink | re-minari-node-js-20170822t070606151z |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"image":["https://img.youtube.com/vi/s6SH72uAn3Q/0.jpg"],"links":["https://www.youtube.com/watch?v=s6SH72uAn3Q"],"app":"steemit/0.1"} |
created | 2017-08-22 07:06:06 |
last_update | 2017-08-22 07:06:06 |
depth | 1 |
children | 0 |
last_payout | 2017-08-29 07:06:06 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 62 |
author_reputation | 4,188,781,313,300 |
root_title | "node.js의 비동기 처리에 대한 쉬운 자료가 있을까요?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 12,508,303 |
net_rshares | 0 |
답변해 주신 분들께 감사드립니다. 제가 node.js를 사용하는 가장 큰 이유는 인터넷 상의 정보 수집에 있습니다. python보다 훨씬 데이터를 긁어오는데 오류 저항력(?)이 쎈 것 같아서 갈아타고 있는데 , 순차적인 개발이 아니게 되니 어느 수준 이상으는 너무 복잡해 지더라구요. DB에 데이터를 넣을때도 sql문조차 for 문에서 setTimeout돌리는 것 만큼 이상하게 동작하기도 하고.. 여튼 감사합니다.
author | minari |
---|---|
permlink | re-minari-node-js-20170822t084319707z |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"app":"steemit/0.1"} |
created | 2017-08-22 08:43:21 |
last_update | 2017-08-22 08:43:21 |
depth | 1 |
children | 0 |
last_payout | 2017-08-29 08:43:21 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 233 |
author_reputation | 18,256,774,154,134 |
root_title | "node.js의 비동기 처리에 대한 쉬운 자료가 있을까요?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 12,514,775 |
net_rshares | 0 |