Rylah's Study & Daily Life

JS Promise resolve reject 본문

Web Study/Javascript

JS Promise resolve reject

Rylah 2022. 4. 16. 16:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const job_1 = () => {
    const b = Math.random() * 100
    setTimeout( () => {
        console.log("job1 log : " + b)
    }, b)
}
 
const job_2 = () => {
    const b = Math.random() * 100
    setTimeout( () => {
        console.log("job2 log : " + b)
    }, b)
}
 
const job_3 = () => {
    const b = Math.random() * 100
    setTimeout( () => {
        console.log("job3 log : " + b)
    }, b)
}
 
job_1()
job_2()
job_3()
 
cs

보다시피 random하게 시간을 만들어서 출력을 하면 가장 빨리 실행이 끝나는 것이 먼저 끝나므로 순서가 보장되지 않게 된다.

 

 

이를 순서가 보장되어야만 하는 일에서는 어떻게 해야할까?

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const job_1 = (name = "job_1"=> {
    const delay = Math.random() * 100
    return new Promise( (resolve, reject) => {
        // 비동기 함수 로직
        setTimeout( () => {
            resolve(`${name} log : ${delay} time use`)
        }, delay)
    })
}
 
job_1("job_1").then(ret => {
    console.log(ret)
    return job_1("job_2")
}).then(ret => {
    console.log(ret)
    return job_1("job_3")
}).then(ret => {
    console.log(ret)
    return job_1("job_4")
}).then(ret => {
    console.log(ret)
})
cs

흔히 멀티쓰레드 작업 환경에서 순서가 보장이 필요한 경우에 사용할 것이다.

 

보장해주지 않으면 이런 일이 벌어질 수 있을 것이다.

 

출처 : http://www.yes24.com/Product/Goods/104208010

 

실시간 모니터링 시스템을 만들며 정복하는 MEVN - YES24

D3.js 7.x, MongoDB 5.x, Vue.js 3.x 반영된 최신 코드로실시간 주식 모니터링부터 개발자 포트폴리오까지 한 권으로 정복!자바스크립트 언어가 발전함에 따라 개발 시장에서 더욱 영향력이 커지고 있다.

www.yes24.com

 

'Web Study > Javascript' 카테고리의 다른 글

JS ES6 Queue  (0) 2022.04.16
find, findIndex  (0) 2022.04.15