js
promise
멋진 개구리
2021. 4. 7. 22:55
반응형
- 프로미스
- Promise는 호출을 하면서 끝나는 동안에도 실행이 되는 비동기 방식 함수
사용법
/* 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"); });
프로미스 없다면 콜백함수로 쓴다
/* 보통 비동기 작업을 할때, callback함수를 인자로 넣어 로직이 끝나면 callback함수를 호출한다. 이런경우 함수가 아래로 진행되지 않고, callback 함수안으로 진행된다. */ //프로미스가 없을땐 콜백지옥
function c(callback){
setTimeout(() => {
callback();
}, 1000);
}
c(()=>{
console.log('1000ms 후에 콜백 함수가 실행이 된다.');
});
c(()=>{
c(()=>{
c(()=>{
console.log('3000ms 후에 콜백 함수가 실행이 된다.');
});
});
});
```
반응형