js

promise

멋진 개구리 2021. 4. 7. 22:55
반응형
  1. 프로미스
  • Promise는 호출을 하면서 끝나는 동안에도 실행이 되는 비동기 방식 함수
  1. 사용법

     /*
     executor 함수는 resolve 와 reject 를 파라미터로 갖는다.
     (resolve, reject) => {...0}
     resolve와 reject 는 함수
     resolve(), reject()
     */
     new Promise(/* executor  */(resolve, reject)=>{});
    
     //생성자를 통해 프로미스 객체를 만드는순간 pending(대기)상태라고 한다.
     new Promise((resolve, reject)=>{}); //pending
    
     //executor 함수 파라미터중 하나인 resolve 함수를 실행하면, fulfilled(이행) 상태가 된다.
     new Promise((resolve, reject)=> {
     //
     //
         //...
         resolve();//fulfilled 
         }
     );
    
     //reject 함수를 실행하면 rejected(거부)상태가 된다.
    
     new Promise((resolve, reject)=> {
     reject();//rejected
     });
     function p(){
         return new Promise((resolve, reject)=> {
             //pending
                 setTimeout(()=> {
                 resolve('hello');//fulfilled
    
             },1000);
    
         });
     } 
    
     p().then((message)=> {
            //fulfilled  
            //1초후에 시작
            console.log("1초 1000ms 뒤에 실행",message);
    
         }).catch(()=> {
         console.log("1초 1000ms 뒤에 rejected");
     }); 
    
  2. 프로미스 없다면 콜백함수로 쓴다

     /*
     보통 비동기 작업을 할때, callback함수를 인자로 넣어 로직이 끝나면 callback함수를 호출한다.
     이런경우 함수가 아래로 진행되지 않고, callback 함수안으로 진행된다.
    
     */
    
     //프로미스가 없을땐 콜백지옥
    
    
function c(callback){
    setTimeout(() => {
        callback();
    }, 1000);
}
c(()=>{
    console.log('1000ms 후에 콜백 함수가 실행이 된다.');
});

c(()=>{  
    c(()=>{
        c(()=>{
            console.log('3000ms 후에 콜백 함수가 실행이 된다.');
            });
    });
});
```
반응형