#39 JS - Promise 개념
Promise 는 비동기적으로 실행하는 작업의 결과(성공 or 실패)를 나타내는 객체이다.
Promise(executor) 이렇게 'executor' 라는 한개의 인자 값이 들어간다.
executor는 'resolve' , 'reject' 이렇게 두개의 인자 값을 받는 실행 함수이다.
Promise라는 객체가 리턴해서 오기 때문에, 바로 그 값에 접근 할 수가 없다.
따라서, .then 같은 메소드들을 사용해야 한다.
let promise = new Promise(function (resolve, reject) {
setTimeout(function () {
let ran = Math.random() * 10;
if (ran > 5) {
resolve(ran);
} else {
reject();
}
}, 1000
});
Promise에 executor function (resolve, reject) 가 인자로 들어가고 그 executor 에는 (resolve, reject)의 두개의 인자가 들어간다.
그 이후 promise 값을 콘솔 하고 싶다. 혹은 그 뒤의 작업을 진행한다면,
Promise를 사용하고 있기 떄문에
promise.then(응답성공, 응답에러)
이런식으로 .then을 또 사용한다.
.then()은 이어받은 promise객체를 리턴한다.
timeAttack.then(function (num) {
console.log(num + 'complete');
}, function () {
console.log('error');
});
.promise.then(...).then(...).then(...)
이렇게 계속해서 콜백 함수들의 리턴 값을 이어받을 수도 있다. => chaining
::: 정리 :::
promise 에는 한개의 함수인 인자가 들어간다.
그 함수인 인자에 resolve, reject 이렇게 두개의 인자가 들어간다.
그냥 console.log(promise) 하면 객체가 프린팅 된다.
promise.then(응답 성공 함수 1, 응답 실패 함수2)
이렇게 접근 한다.
자바스크립트의 chaining 이란
=> 콜백함수의 리턴 값을 계속해서 이어 받아서 코드를 진개하는 방법