promise란 뭘까.
const promise = new Promise()
이런 식으로 promise를 만드는데, promise 안에 성공/실패를 판정할 무엇인가를 함수로 집어넣어 준다.
나는 1+1
이 성공했는지(이건 무조건 성공하는 연산이긴 하다.)를 판정하려고 한다.
const promise = new Promise(() => {
const 연산 = 1+1;
})
여기서 성공했을때 실행할 함수, 실패했을때 실행할 함수(executor
)를 파라미터로 넣어준다.
const promise = new Promise((resolve, reject) => {
const 연산 = 1+1;
})
그리고 성공하면 resolve
, 실패하면 reject
를 실행한다고 코드를 작성하면 된다.
이 경우, 무조건 성공하니까 그냥 resolve
를 실행하겠다.
const promise = new Promise((resolve, reject) => {
const 뭔가 = 1+1;
resolve();
})
이제 이걸 사용해보자.
const promise = new Promise((resolve, reject) => {
const 뭔가 = 1+1;
resolve();
});
promise
.then(() => {console.log("성공했다")})
.catch(() => {console.log("실패했다")});
promise는 판정하는 도구이다.
then
은 성공하면 괄호 안에 있는걸 실행해주세용~
catch
는 실패하면 괄호 안에 있는걸 실행해주세용~
합쳐보면, promise가 판정한 결과에 따라 then
이나 catch
가 실행되는데, 어쩌피 짜놓은 promise가 무조건 성공이라... 성공했다는 문장이 출력된다.
만약에 실패하는 경우라고 가정해본다면?
서버에서 데이터를 받아와주세요~ 했는데 실패했다면? catch
내의 코드가 실행될 것이다.
주로 사용하는 예시인 setTimeout
도 써봤다.
const promise = new Promise((resolve, reject) => {
setTimeout(()=>{
resolve();
},3000)
});
promise
.then(() => {console.log("성공했다")})
.catch(() => {console.log("실패했다")});
console.log('비동기')
이럼 3초 후에 성공했다고 찍히겠지?
그리고 setTimeout으로 인해 console.log('비동기')가 먼저 실행된다.
끗.
설명이 이해가 잘되네요~!