Promise
2021. 5. 24. 21:57ㆍTIL/자바스크립트
728x90
// Promise is a JavaScript object for asynchronous operation.
// State: pending -> fulfilled or rejected
// Producer vs Consumer
// 1. Producer
// when new Promis is created, the executor runs automatically.
const promise = new Promise((resolve, reject) => {
// doing some heavy work (network, read files)
console.log('doing something...');
setTimeout(() => {
resolve('bella');
reject(new Error('no network'));
}, 2000);
});
// 2. Consumers: then, catch, finally
promise
.then(value => {
console.log(value);
})
.catch(error => {
console.log(error);
})
.finally(() => {
console.log('finally');
});
// 3. Promise chaining
const fetchNumber = new Promise((resolve, reject) => {
setTimeout(() => resolve(1), 1000);
});
fetchNumber
.then(num => num * 2)
.then(num => num * 3)
.then(num => {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(num - 1), 1000);
});
})
.then(num => console.log(num));
// 4. Error Handling
const getHen = () =>
new Promise((resolve, reject) => {
setTimeout(() => resolve('🐓'), 1000);
});
const getEgg = hen =>
new Promise((resolve, reject) => {
setTimeout(() => reject(new Error(`error! ${hen} => 🥚`)), 1000);
});
const cook = egg =>
new Promise((resolve, reject) => {
setTimeout(() => resolve(`${egg} => 🍳`), 1000);
});
getHen()
.then(getEgg)
.then(cook)
.then(console.log)
.catch(console.log);
'TIL > 자바스크립트' 카테고리의 다른 글
async & await (0) | 2021.05.27 |
---|---|
callback to promise (0) | 2021.05.24 |
비동기처리 콜백 (0) | 2021.05.20 |
JSON (0) | 2021.05.20 |
Array API Quiz (0) | 2021.05.20 |