Skip to content

기글하드웨어기글하드웨어

인터넷 / 소프트웨어 : 윈도우즈, 리눅스, 기타 운영체제, 각종 어플리케이션, 프로그램, 소프트웨어, 인터넷, 인터넷 서비스에 대한 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form

다른 비동기 프로그래밍 언어도 그런건지는 잘 모르겠으나 이게 루프 돌릴때 참 골때립니다.

해보신분은 알겠지만 자바스크립트에서 지연처리를 한다고 하면 setTimeout이나 setInterval을 쓰죠

 

setTimeout(fn, delay)

 

이렇게 쓰면 함수fn이 delay시간(밀리세컨드 단위) 후에 실행이 되는건데 그러면 누구나 상식적으로

 

for(var i = 0; i < 10; i++) {

setTimeout(function() {

console.log(i);    //반복작업 구문 example

}, 1000);

}

 

이런 식으로 쓰겠죠. 그런데 문제는.. 이러면 결과는 1초 후에 10만 열번 출력됩니다. What the..

 

결론적으로 말하면 setTimeout이 기다리거나 말거나 for는 죽어라 루프를 돌리고 setTimeout이 i를 찾을때는 10만 남아있는거죠

여기서 해결책이 두가지입니다. (물론 더 있겠지만..)

 

A : 내부에 함수를 하나 더 만들어서 i를 인자로 입력받습니다. 어려워보이지만 쓰고보면 별거 아닙니다.

 

// 익명함수 버전

for (i=0; i < 3; i++) {

(function(x) {

setTimeout(function() {

console.log(x);

}, 1000*x);

})(i);

}

}

 

// 기명함수 버전

function loop(x) {

setTimeout(function() {

console.log(x);

}, 1000*x);

}

for (i = 0; i < 3; i++) {

loop(i);

}

 

함수로 setTimeout을 감싸고 i를 놓치지 않고 죄다 익명함수의 x라는 변수로 받아서 시간 순서대로 실행되도록 만드는 거죠

오~ 기발한데~ 라고 생각이 들다가도 이게 뭔짓인가 싶습니다(...) 필요한 갯수만큼 setTimeout을 다 만들어놓는거니까요

 

B : 재귀함수를 만듭니다. 백문이 불여일견

 

function start(counter){

if(counter < 10){

setTimeout(function(){

counter++;

console.log(counter);

start(counter);

}, 1000);

}

}

 

start(0);

 

A와 비교하면 for 대신 if, 스코프는 한 단계 줄었습니다. (A도 결국 function 안에 속한다고 치면 말이죠.) 그러나 재귀함수가 그렇듯이 실행되기 시작하면 루프 개수만큼 늘어날테죠. 아무래도 재귀함수 자체가 좀 어려운 개념이다 보니 A 방식을 더 많이 본거 같긴 하네요

 

비동기 이슈로 한차레 골머리를 썩고 나니 ES6를 빨리 공부해야 할것 같습니다. Promise가 그렇게 좋다던데.. 파이썬 공부도 해야 하고 바쁘네요

 

오늘의 밥 아저씨

A: http://goo.gl/LuY4Qe

B: http://goo.gl/82thlY

 

Bob_ross.jpg

 



  • ?
    한걸음 2016.08.22 09:20
    settimeout 에 함수 넣을때 함수가 매개변수로 가지고 가게 만들어도 안되나요?
  • ?
    WebGL 2016.08.22 13:08
    옙, 바로 그 setTimeout이 함수실행 시점을 딜레이시키기 때문에 매개변수를 받는 시점도 늦어집니다
    직접 해보니 undefined만 시간순서에 맞춰서 출력되네요 setTimeout(......)까지는 전달이 되지만 매개변수의 함수까지는 전달이 늦춰지는 것 같습니다.

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. No Image

    간단한 질문입니다??! 윈도우 텐

    갑자기 궁금해서... 3년전 윈도우 10 구매후 시디키 최초 1번 입력후 다음 윈도우 새로 하드 포맷하고 깔아도 윈도우 시디키가 입력되는데 바이오스에 키가 저장되는건가요? 라떼판다같은 윈도우 포함해서 출시되는 제품 처럼 ?  만약에 ...
    Date2022.01.03 질문 By루크 Reply6 Views1946
    Read More
  2. No Image

    로빈후드, 가상화폐 지갑의 베타 버전 출시

    수수료가 없는 주식 거래 플랫폼인 로빈후드가 이번에는 가상화폐 지갑의 베타 서비스를 시작한다고 발표했습니다. 1월 중순부터 서비스를 시작하는데, 160만 명이 넘는 사람이 대기 명단에 등록했습니다. 코인마다 하나의 지갑이 있고 다...
    Date2022.01.03 소식 By낄낄 Reply4 Views1116
    Read More
  3. 인벤터에서 한 객체를 두개로 나누고 싶습니다.

              1번째 처럼 한 뭉텅이가 있는데 그 뭉텅이를 2개로 나눠서 따로 저장하고싶습니다.. 인벤터를 직접 배워본적이 없어서 어떻게 찾아야 할지도 모르겠어요.. 3d프린팅을 해야하는데 1번 사진의 물체를 뽑기에는 프린터 공간이 작...
    Date2022.01.03 질문 By가지 Reply5 Views1841 file
    Read More
  4. 마도베 나나미 테마팩의 사소한(?) 윈도우 11 호환성 문제

    많은 분들이 아시다시피, 윈도우 7 발매 즈음 일본에서 마스코트 캐릭터로 만든 '마도베 나나미'라는 캐릭터가 있습니다. 테마팩도 따로 나왔는데, 개인적으로 좋아하는 성우가 목소리를 담당했다 보니 관심은 있었지만 이걸 쓰기가 묘하...
    Date2022.01.01 일반 By건틀렛 Reply1 Views2873 file
    Read More
  5. 인텔, 리눅스 서버에서 재부팅 없이 바이오스 업데이트 기능 제공 예정

    인텔이 시스템을 재부팅하지 않고도 UEFI의 바이오스 업데이트를 진행하는 플랫폼 펌웨어 런타임 업데이트 PFRUT의 지원을 준비하고 있습니다. 개인용 컴퓨터에서는 바이오스 업데이트를 위해 시스템을 재부팅하는 게 큰 의미는 없지만, ...
    Date2021.12.31 소식 By낄낄 Reply3 Views2036 file
    Read More
  6. No Image

    토스, 마이데이터 규정 위배 논란

    토스를 서비스하는 비바리퍼블리카는 지난주부터 일부 서비스에 한해 순차적으로 마이데이터 오픈API를 적용하면서 기술·서비스 가이드라인을 준수하지 않아 반발을 사고 있다. 이미 유관기관인 신용정보원과 금융보안원이 가이드...
    Date2021.12.30 소식 By낄낄 Reply10 Views2166
    Read More
  7. No Image

    일본 교토 대학 슈퍼컴퓨터의 데이터 손실

    일본 교토 대학에서 운영하는 슈퍼컴퓨터의 데이터가 77TB 가량 삭제됐습니다. 파일 갯수는 3400만개입니다. 삭제된 이유는 일본 HP에서 제작한 백업 프로그램을 쓰는데, 그게 백업 로그 파일을 지운다는게 오작동해서 멀쩡한 데이터를 지...
    Date2021.12.30 소식 By낄낄 Reply9 Views2451
    Read More
  8. No Image

    하드디스크 복구툴중에 추천가능할까요??

    롤이 너무 무한재접속이 자주 걸려서 개빡쳐서 그냥 포맷할려고 부팅디스크만들고 들어갔는데   실수로 다른 드라이브를 포맷해버렸어요 ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ   진짜 왜 조심안하고 그냥 했는지 후회가 됩니다..   easeus data r...
    Date2021.12.29 질문 By99rising Reply2 Views2164
    Read More
  9. No Image

    엘살바도르 공식 비트코인 지갑에서 돈이 사라진다는 주장

    엘살바도르는 비트코인을 법정 통화로 인정하면서, 공식 비트코인 지갑인 치보(Chivo)를 운영했습니다. 그런데 여기에서 비트코인이 빠져나간다는 주장이 계속해서 나오고 있습니다. 작게는 100달러, 많게는 16,000달러에 달하는 비트코인...
    Date2021.12.29 소식 By낄낄 Reply6 Views2240
    Read More
  10. VPN으로 방화벽을 뚫어보아요

    제목과 같이. VPN을 이용해서 방화벽 너머 컴퓨터에 원격 접속하는 내용입니다.   사정상 회사 사무실이 두 군데로 갈라져 있습니다. 그런데 어쩜 이리 똑같게도, 두 건물 모두 사설IP가 할당되는 환경입니다. 어머 끔찍해라.   사무실에...
    Date2021.12.28 일반 ByKoasing Reply12 Views3909 file
    Read More
  11. 구글 스프레드시트 번역 기능이 엉망이네요

      일본어에서 한국어로 번역 기능 함수를 사용하였는데, 제대로 번역하는 단어가 없어요. 뭔가 잘 못 되어 있는 게 분명해요!    
    Date2021.12.28 일반 By부녀자 Reply4 Views2356 file
    Read More
  12. No Image

    윈도우 11, HDR 디스플레이에서 올바른 색을 표시하지 못하는 문제

    윈도우 11 21H2와 HDR 지원 디스플레이를 함께 사용 시, 일부 이미지 편집 소프트웨어에서 올바른 색상 표시가 안 되는 문제가 있습니다. 대표적으로 하얀색을 밝은 노란색으로 표시하는 경우가 있다네요. 다만 윈도우 11에서 컬러 프로파...
    Date2021.12.27 소식 By낄낄 Reply3 Views2386
    Read More
  13. 클라우드 플레어가 집계한 2021년 인터넷 기록

    클라우드 플레어가 집계한 2021년 인터넷 기록 입니다. 우선 가장 인기 있던 도메인입니다. 2021년이고요. 1 TikTok.com 2 Google.com 3 Facebook.com 4 Microsoft.com 5 Apple.com 6 Amazon.com 7 Netflix.com 8 YouTube.com 9 Twitter.c...
    Date2021.12.27 소식 By낄낄 Reply6 Views2552 file
    Read More
  14. No Image

    리눅스 5.16에서 라이젠 프로세서의 성능 향상

    리눅스 커널 5.16에서 내장 그래픽이 있는 라이젠 프로세서를 탑재한 노트북의 성능이 약간 올랐다고 합니다. 기존의 리눅스 커널과 비교하면 5~14% 더 높은 성능을 내준다네요. 라이젠 5 5500U가 탑재된 노트북의 경우 GLmark 2와 Xonoti...
    Date2021.12.27 소식 By낄낄 Reply1 Views1702
    Read More
  15. 텍스트 입력같은 애매한 질문인데 물어볼곳이 이곳밖에 없네요

    프리미어로 자막 입력중입니다    ins 기능을 꺼도 중간에 삽입한 글자가 뒤 글자를 덮어쓰는 현상이 발생합니다;;;   파란색 밑줄이 생기면서 빨간 배경있는곳의 오른쪽에 해당하는 글자를 덮어씌우는것 같은데   이후 띄어쓰기를 하면 ...
    Date2021.12.26 질문 ByBIGFISH Reply4 Views2850 file
    Read More
목록
Board Pagination Prev 1 ... 202 203 204 205 206 207 208 209 210 211 ... 577 Next
/ 577

최근 코멘트 30개
까마귀
01:41
냥뇽녕냥
01:35
검은숲
01:21
냥뇽녕냥
01:09
냥뇽녕냥
01:06
빈도
00:58
헥사곤윈
00:42
헥사곤윈
00:41
캐츄미
00:31
TundraMC
00:28
ExpBox
00:05
mnchild
00:05
Touchless
00:03
babozone
00:02
초코칩자반고등어
23:51
급식단
23:51
초코칩자반고등어
23:50
초코칩자반고등어
23:50
초코칩자반고등어
23:49
일설공
23:34
메케메케
23:28
포도맛계란
23:23
포도맛계란
23:23
슬렌네터
23:14
360Ghz
23:13
슬렌네터
23:13
wwsun98
23:12
슬렌네터
23:12
메케메케
23:07
뚜찌`zXie
23:05

AMD
한미마이크로닉스
더함
MSI 코리아

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소