'use strict'
const { reject } = require("async")
// promise is a JavaScript object for asynchronous operation
// State: pending -> fulfilled or rejected
//Producer vs Consumer
//1.Producer
// when new Promise is created, the ececutor runs automatically
const promise = new Promise((resolve, reject) => {
// doing some heavy work (network, read, files)
console.log('doing something...');
setTimeout(() => {
//resolve('son'); //값을 주고 통신에서 받은 데이터를 받아옴
reject(new Error('no network'));
}, 2000); //after 2S Start
});
//2. Consumers : then, catch, finally
promise.then((value) =>{
console.log(value); // value값에 들어가는 값은 resolve('son')의 파라메터 값 즉 여기서는 son이다
})
.catch(error =>{
console.log(error);
});
.finally(() => {
console.log('finally');
});
//3. Promise chaning
const fetchNumber = new Promise((resolve, jeject) => {
setTimeout(() => resolve(1), 1000);
});
fetchNumber
.then(num => num *2) // 1*2
.then(num => num *3) // 2*3
.then(num => {
return new Promise((resolve, reject) =>{
setTimeout(() => resolve(num - 1), 1000); //num =5
});
})
.then(num => console.log(num)); //5출력
'JavaScript' 카테고리의 다른 글
자바스크립트 기본 (0) | 2022.05.19 |
---|---|
JavaScript await and Promise APIs (0) | 2022.05.16 |
자바스크립트 배열 (0) | 2022.02.18 |
자바스크립트 object (0) | 2022.02.12 |
JavaScript Class object (0) | 2022.02.03 |