작성
·
138
·
수정됨
0
안녕하세요.
강의를 듣고 지난달부터 필요한 웹화면을 만들어서 거의 완성을 했습니다. 현재는 테스트버전으로 만든 상태이나 그럭저럭 동작들이 잘 돌아가기는 하는데 코드도 좀 지저분하다는 생각이 들고.. 여러모로 관련이 있는 강의부분들을 다시 들어보며 가다듬고 있습니다. 처음 들었을 때는 무작정 주입식으로만 생각하고 받아들였었는데...
직접 만들면서 고민을 했던 부분들이 강의내용에 있는 것들이었네요.. 역시 다시 들어볼 수록 그때는 무슨 말인지 잘 모르고 넘어갔었는데 이제사 이해가 가면서 새삼 명강의라는 걸 느낍니다.
암튼... 궁금한 게 있습니다.
promise . then .catch 구문에서 promise를 생략하고 .then .catch 를 해도 돌아가기는 하는데 혹시 이러면 문제가 있을까요??
답변 1
0
안녕하세요. 답변 도우미입니다.
우선 좋게 봐주셔서 감사합니다.
Promise 체인에서 .then
과 .catch
는 특정 Promise가 해결되거나 거부되었을 때 실행할 콜백 함수를 등록하는 역할을 합니다. .then
은 Promise가 성공적으로 해결될 때 실행되고, .catch
는 Promise가 거부될 때 실행됩니다.
```javascript
myPromise
.then(response => {
console.log('Success:', response);
})
.catch(error => {
console.error('Error:', error);
});
```
위 코드에서는 myPromise
가 해결되거나 거부될 때 각각의 콜백 함수가 실행됩니다. 질문에서 말씀하신 것처럼 만약 Promise를 생략하고 .then
과 .catch
를 사용할 때는 다음과 같은 방식으로 사용됩니다:
```javascript
.then(response => {
console.log('Success:', response);
})
.catch(error => {
console.error('Error:', error);
});
```
위의 코드는 작동하지 않습니다. 이는 .then
과 .catch
가 각각의 콜백 함수를 Promise 체인에 추가하기 위해서는 반드시 앞에 Promise 객체가 존재해야 하기 때문입니다. Promise를 생략하면 .then
이나 .catch
가 어떤 Promise 객체와도 연결되지 않아 실제로 콜백 함수가 실행될 기회를 얻지 못합니다.
따라서 .then
과 .catch
를 사용할 때는 반드시 해당하는 Promise 객체를 명시적으로 작성해야 합니다. 예를 들어, 어떤 함수가 Promise를 반환하는 경우 다음과 같이 작성할 수 있습니다:
```javascript
function someAsyncFunction() {
return new Promise((resolve, reject) => {
// 비동기 작업 수행
if (성공) {
resolve('성공 메시지');
} else {
reject('에러 메시지');
}
});
}
someAsyncFunction()
.then(response => {
console.log('Success:', response);
})
.catch(error => {
console.error('Error:', error);
});
```
위와 같이 사용하여야 비동기 작업이 끝난 후 .then
과 .catch
에 등록된 콜백 함수가 정상적으로 호출됩니다. Promise를 생략하는 것은 문법적으로나 논리적으로 올바르지 않으므로 반드시 Promise를 명시적으로 작성해 주세요.
감사합니다.
잔재미코딩 드림