프로미스는 자바스크립트에서 동기 방식 처리를 위해 생긴 기술이다. 즉, 어떠한 행위를 걸어 놓고선 그 행위가 끝나면 다음 행위를 하라는 기술이다.
간단하게, ajax같은 기술을 사용하면 데이터를 받으면서 다른행위를 할 수 있는 것과 반대되는 개념이다.
1번부터 5번까지의 할 일이 있다면 반드시 1번 끝난 이후에 2번하라 라고 명령을 할 수가 있다. 아래 예제코드를 보면,
function method(param){ //함수 선언
return new Promise(function(resolve,reject){ //프로미스 객체로 리턴 내부의 변수는 당연히 바꾸어서 사용 가능하다.
if(param != null){
resolve('good working'); //resolve는 프로미스의 고유 기능, 성공시 수행하는 곳
}
else{
reject(new Error("Request is failed")); //reject는 실패했을 시 실행되는 구간
}
});
}
method('argument').then(function(callbackData){
console.log(callbackData);
}).catch(function(error){
console.log(error);
});
위 코드를 실행하면 콜백으로 넘어온 데이터가 잘 출력됨을 알 수 있다.
만약 실행하는 파라미터에 null값을 넣는 다면 catch문이 발동하여 에러로그를 볼 수 있다.
이러한 기능을 활용하면...then을 여러번 쓸 수 있다.(then지옥..)
method('argument').then(function(callbackData){
console.log(callbackData);
}).then(function(){
console.log('then 1');
}).then(function(){
console.log('then 2');
}).then(function(callbackData){
console.log('then 3');
});
순차적으로 내용이 출력됨을 볼 수 있다.
물론 async와 await를 활용해서도 동일한 기능구현이 가능하다.
반응형
'Javascript > [중요] Javascript' 카테고리의 다른 글
Javascript Map, 맵 (0) | 2019.04.27 |
---|---|
자바스크립트 정규식 RegExp (0) | 2019.04.27 |
Formdata를 활용하여 ajax로 파일전송 하기 (0) | 2019.04.26 |
Html 캔버스 Hover 이벤트 만들기 (0) | 2019.04.26 |
비동기 방식 프로그래밍, rxjs (0) | 2019.04.26 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글