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

    OpenWRT 20주년 기념 OpenWRT One 공개

    참고1: https://news.hada.io/topic?id=12791   2024년이면 OpenWRT가 시장에 출시된지 20년이 경과 합니다.   이에 따라 OpenWRT는 업스트림이 공식적으로 지원되는 OpenWrt One/AP-24.XY 를 공개합니다.   ----------------------------...
    Date2024.01.13 소식 Bytitle: 가난한카토메구미 Reply10 Views1314
    Read More
  2. 마소 로그인 이력 한번 까봤습니다.

      제가 한 두번의 로그인 제외하고는 다 실패입니다. 저는 미국이나 독일을 가본적이 없습니다.(아 명예 미국인을 2주마다 하기는 하지만)   어쨋든 로그인 실패하는 이유는 간단합니다 2FA 쓰거든요. 쓴지는 7년이상됩니다. 과거 윈10/...
    Date2024.01.13 일반 Bytitle: 가난한AKG-3 Reply4 Views720 file
    Read More
  3. No Image

    지금 윈도우10과 유튜브 문제 있나요?

    유튜브가 렉걸리는 사양이 아닌데 렉이 엄청 걸리면서 재생도 안되네요 윈도우10은 22H2, 빌드는 19045.3803 크롬은 최신, 120.0.6099.217(공식 빌드) (64비트)입니다.
    Date2024.01.13 질문 By240Hz Reply13 Views961
    Read More
  4. No Image

    윈도우 10의 비트로커 취약점 패치 설치가 실패하는 시스템이 있음

    마이크로소프트는 윈도우 10 시스템에 영향을 미치는 비트로커 암호화 우회 취약점을 패치하기 위해 KB503441 업데이트를 발표했습니다. 하지만 이 패치를 설치할 때 업데이트 실패가 뜨는 경우가 있다고 하네요. 이 패치는 윈도우 복구 ...
    Date2024.01.13 소식 By낄낄 Reply3 Views949
    Read More
  5. 윈도우 11 프리뷰에서 USB 80Gbps 를 지원

    윈도우 11 인사이더 프리뷰 Dev 채널에서 빌드 23615를 배포하고 있습니다. USB의 최신 규격인 USB 80Gbps를 지원합니다. USB 80Gbps는 말 그대로 최대 80Gbps로 전송이 가능한 규격으로, 정식 스펙 명칭은 USB4 버전 2.0입니다.
    Date2024.01.13 소식 By낄낄 Reply14 Views1881 file
    Read More
  6. No Image

    디스코드, 170명 해고

    직원 17%를 해고할 예정이라고 합니다.   지난해 말에도 4%가량 해고했었고 2019년에도 비공개인원을 해고했었다고.
    Date2024.01.12 소식 Bytitle: AI아무개 Reply4 Views973
    Read More
  7. 틱톡, 최초로 인앱 결제 100억 달러 달성

    틱톡이 2023년에 인앱 결제 100억 달러를 달성했다고 합니다. 이는 앱 역사상 처음 있는 일입니다. 틱톡은 컨텐츠 크리에이터와 스트리머에게 수입을 창출할 수 있는 기능을 제공하며, 더 많은 수익을 창출하고 그 방법을 찾기 위해 노력...
    Date2024.01.12 소식 By낄낄 Reply6 Views1254 file
    Read More
  8. 유튜브 동영상에서 AMD FSR 초해상 업스케일링 기능 지원

    AMD 피델리티 FX 슈퍼 레졸루션(줄여서 FSR) 기반 동영상 초해상 업스케일링 기능을 유튜브 동영상에서 쓸 수 있게 됩니다. 또 VLC와 함께 FSR 업스케일링과 노이즈 제거 기능이 통합된 비디오 플레이어를 개발 중입니다. 발표가 언제일...
    Date2024.01.11 소식 By낄낄 Reply9 Views1057 file
    Read More
  9. No Image

    트위치, 인력 35% 해고한다

    한국 시장 철수를 결정한 글로벌 생방송 스트리밍 플랫폼 트위치가 전체 직원의 35%를 해고할 예정이라고 블룸버그 통신이 9일(현지시간) 보도했다. 소식통에 따르면, 트위치는 오는 10일 감원 계획을 공식 발표할 예정이다. 감원 규모는 ...
    Date2024.01.11 소식 By낄낄 Reply0 Views608
    Read More
  10. No Image

    윈도우 인덱싱을 꺼버리면 어떤 문제가 발생할 수 있나요?

    윙도우 10 22H2를 사용하고 있습니다 개발용 SSD는 870 EVO 1TB를 사용하고 있습니다(OS는 다른곳에 위치)   회사 보안 프로그램 때문에 정말 끔찍한 속도 저하를 겪고 있습니다(라고 파악하고 있었습니다) 파일 대충 8천개 되는 개발 폴...
    Date2024.01.11 질문 Bydmy01 Reply8 Views915
    Read More
  11. No Image

    미국 증권거래위, 11개 비트코인 현물 ETF 상장 승인

    미국 증권거래위원회가 비트코인 현물상장지수펀드, ETF의 상장을 승인했습니다. 11개 비트코인의 현물 ETF의 거래가 현지 시각 내일부터 바로 가능해집니다. 우여곡절끝에 결국은 승인이 됐군요.
    Date2024.01.11 소식 By낄낄 Reply4 Views992
    Read More
  12. 이런 자막은 왜 모자이크 처리하는건가요?

      사진은 T1 Faker 이상혁 선수가 개인방송에 스트리밍한 화면을 유튜브 채널에 올린 것이고, 그것을 캡처한 것입니다. (생방송을 실시간으로 통역해서 저런 자막이 있는 것입니다.)   가끔 공중파, 지상파 영상을 공중파, 지상파 채널에...
    Date2024.01.10 질문 By방황하는물고기 Reply3 Views1196 file
    Read More
  13. SEC: 현물 비트코인 ETF 승인 발표...가 아니라 해킹당했음

    미국 SEC의 X 계정은 현물 비트코인 ETF를 승인했다고 발표했습니다. 하지만 SEC 의장인 Gary Gensler는 그런 승인이 없다고 정정했습니다. 이중 인증을 걸어두지 않아, 다른 사람이 쓴 글이라고 하네요. https://twitter.com/GaryGensle...
    Date2024.01.10 소식 By낄낄 Reply5 Views1146 file
    Read More
  14. 프린터는 작동하지만 드라이버는 제공하지 않습니다

    스마트폰과 태블릿이 보급된 지금 같은 세상이야말로, 빌 게이츠 말대로 사무실에서 종이가 사라져도 될 때라고 생각합니다만 그래도 종이가 필요할 때가 있습니다. 어디라고 말할 수는 없지만 갑자기 서류에 싸인해서 보낼 일이 생겼어요...
    Date2024.01.10 일반 By낄낄 Reply7 Views705 file
    Read More
  15. No Image

    애플 에어드랍, 중국 정부가 크래킹함

    애플의 에어드랍은 TLS 암호화를 사용해 컨텐츠를 전송하지만, 중국 베이징 법무국은 이를 우회하고 식별 정보를 밝혀낼 수 있는 방법을 찾아냈다고 발표했습니다. 아이폰 디바이스 로그를 분석해 숨겨진 해시 값을 원본 텍스트로 변환, ...
    Date2024.01.10 소식 By낄낄 Reply3 Views1213
    Read More
목록
Board Pagination Prev 1 ... 22 23 24 25 26 27 28 29 30 31 ... 579 Next
/ 579

최근 코멘트 30개
투명드래곤
20:54
투명드래곤
20:53
유에
20:47
포인트 팡팡!
20:46
슬렌네터
20:43
급식단
20:22
능구
20:06
렉사
20:05
Induky
20:04
Induky
20:02
Induky
20:02
아쉘리아
19:46
소고기죽
19:27
검은숲
19:21
cowper
19:21
Kylver
19:14
wwsun98
18:27
TundraMC
18:20
쿠클라델
18:20
CKyuJay
18:20
툴라
18:19
애플마티니
18:18
kerberos
18:15
AKG-3
18:11
야생감귤
18:09
에드화이트
18:08
강제
18:00
강제
18:00
Argenté
17:59
냥뇽녕냥
17:57

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

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


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

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소