비동기식 함수중 대표적으로 Promise 가 있다.
Promise
- 비동기적인 동작에서 callback의 사용을 줄일 수 있다. ( 지속적으로 처리를 해야 되기때문에 콜백함수를 계속 선언해 야하는 지옥에서 탈출 )
- Pending : 객체가 생성되었지만 작업은 완료되지 않는 상태. 파라미터로 resolve( ) 또는 reject( ) 함수를 받는다.
- Fulfilled : 작업이 성공하여 완료된 상태. resolve( ) 를 호출한다, Promise를 사용하는 측에서는 then( )으로 받는다.
- Rejected : 작업이 실패한 상태. reject( )를 호출한다, catch( )로 받을 수 있다.
Promise 단독 사용
function test(value){
// Promise는 항상 resolve, reject 두개의 파라미터를 받는다.
return new Promise((resolve, reject)=>{
if(value>=0)
resolve('ok');
else
reject('error');
});
}
test(1)
.then((result)=>{ console.log(result); })
.catch((error)=>{ console.log(error); })
Chaining
// test를 통과하면 test2 실행, test2 성공하면 test3 실행하는 방식
function test(value){
return new Promise((resolve, reject)=>{
if(value>=0)
resolve('ok');
else
reject('error');
});
}
function test2(value){
return new Promise((resolve, reject)=>{
console.log('test2' + value);
resolve('finished');
});
}
function test3(value){
console.log(value);
}
test(1)
.then(test2)
.then(test3)
.catch((error)=>{ console.log(error); })
'JavaScript' 카테고리의 다른 글
[JavaScript] 클래스와 상속 (0) | 2022.01.19 |
---|---|
[JavaScript] 동기 , 비동기 (0) | 2022.01.19 |
[JavaScript] Async와 await (0) | 2022.01.19 |
[JavaScript] 함수 선언식과 표현식 (0) | 2022.01.19 |