Promise : 일급으로 비동기 값을 다룬다.
대기/성공/실패 상태를 리턴한다.
그 후 원하는 일을 다룰 수 있다.function add20(a) { return new Promise((resolve) => setTimeout(() => resolve(a + 20), 1000)); }
callback : undefined를 리턴한다.
function add10(a, callback) { setTimeout(() => callback(a + 10), 100); }
array : map을 통해 함수 합성
promise : then을 통해 함수 합성
1)
function a() {
return new Promise(function (resolve, reject) {
resolve("resolve");
});
}
a().then(console.log).catch(console.log);
2)
new Promise(function (resolve, reject) {
resolve("resolve");
})
.then(console.log)
.catch(console.log);
1)
function a() {
return new Promise(function (resolve, reject) {
reject("reject");
});
}
a().then(console.log).catch(console.log);
2)
new Promise(function (resolve, reject) {
reject("reject");
})
.then(console.log)
.catch(console.log);
연속적으로 resolve를 해도 한번의 then으로 처리가 가능하다.
Promise.resolve(Promise.resolve(1)).then(function (a) {
console.log(a); //1
});
new Promise((resolve) => resolve(new Promise((resolve) => resolve(1)))).then(
console.log //1
);
생성자의 prototype 속성이 객체의 프로토타입 체인 어딘가 존재하는지 판별
ex)
const P = new Promise((resolve) => resolve(100));
console.log(P instanceof Promise); //true
const H = Promise.resolve(100);
console.log(H instanceof Promise); //true
P와 H에는 Promise와 관련한 것이 객체 내에 존재한다.