none
타입스크립트 비동기 질문입니다. RRS feed

  • 질문

  • 안녕하세요. 타입스크립트 공부하고 있는 사람인데 한가지 의문이 있습니다.

    아래의 소스는 비동기로 구현을 하였습니다.

    그리고 함수마다 콘솔을 보여주게 만들었고요.

    function delay(milliseconds: number, test: HTMLUListElement) {
        try {
            if (milliseconds == 100) {
    
            }
    
            return new Promise<void>(resolve => {
                setTimeout(resolve(sett(milliseconds, test)), milliseconds);
                //setTimeout(resolve, milliseconds);
            });
        }
        catch (e) {
            alert(e);
        }
    }
    
    function sett(milliseconds: number, test: HTMLUListElement) {
        for (var i = 0; i < milliseconds; i++) {
            var li: HTMLLIElement = document.createElement('li');
            li.innerText = test.id + "_" + i;
            test.appendChild(li);
        }
        console.log(milliseconds + "성공");
    }
    
    async function dramaticWelcome(milliseconds: number, test: HTMLUListElement) {
    
        await delay(milliseconds, test);
        console.log(milliseconds);
    
    }
    
    async function test1(test1: HTMLUListElement, test2: HTMLUListElement, test3: HTMLUListElement, test4: HTMLUListElement) {
        console.log("Knock, knock!");
    
        await delay(10000, test4);
        console.log(10000);
    
        await delay(100, test3)
        console.log(100);;
    
        await delay(2000, test2);
        console.log(2000);
    
        await delay(500, test1);
        console.log(500);
    
        console.log("종료!");
    }

    제가 test1함수를 호출하여 html을 그리는 방식인데 순차적으로 실행이 되네요.

    즉 콘솔로그를 확인해 보니 10000, 100, 2000, 500 호출한 함수 순으로 나옵니다.

    비동기이면 10000으로 호출한 함수는 오래 걸리니 젤 늦게 나와야 할것 같은데 C#에 async랑 차이가 있는것 같습니다.

    감사합니다.

    2017년 2월 22일 수요일 오전 9:58