let p = new Promise(function(resolve, reject) {
// 실행코드
});
// resolve(value) — 작업이 성공적으로 마무리되면 호출, 결과는 value에 담김
// reject(error) — 작업이 실패시 호출, error는 error에 담김
// 모던자바스크립트 예제
let promise = new Promise(function(resolve, reject) {
// 프라미스가 만들어지면 executor 함수는 자동으로 실행됩니다.
// 1초 뒤에 일이 성공적으로 끝났다는 신호가 전달되면서 result는 'done'이 됩니다.
setTimeout(() => resolve("끝남!"), 1000);
});
console.log('hello world');
console.log(promise);
// 모던자바스크립트 예제 (살짝 수정)
let promise = new Promise(function(resolve, reject) {
// 프라미스가 만들어지면 executor 함수는 자동으로 실행됩니다.
// 1초 뒤에 일이 성공적으로 끝났다는 신호가 전달되면서 result는 'done'이 됩니다.
setTimeout(() => resolve("이제야 끝남!"), 10000);
});
console.log('hello world');
console.log(promise);
let promise = new Promise(function(resolve, reject) {
// 프라미스가 만들어지면 executor 함수는 자동으로 실행됩니다.
// 1초 뒤에 일이 성공적으로 끝났다는 신호가 전달되면서 result는 'done'이 됩니다.
setTimeout(() => resolve(console.log('데이터를 성공적으로 받아옴')), 1000);
});
console.log('hello world');
// 모던자바스크립트 예제 (살짝 수정)
let promise = new Promise(function(resolve, reject) {
// 1초 뒤에 에러와 함께 실행이 종료되었다는 신호를 보냅니다.
setTimeout(() => reject("에러에러!!"), 3000);
});
let promise = new Promise(function(resolve, reject) {
// 1초 뒤에 에러와 함께 실행이 종료되었다는 신호를 보냅니다.
setTimeout(() => reject(new Error("에러 발생!")), 3000);
});
// 실행하지 마세요. pending에 빠집니다.
let promise = new Promise(function(resolve, reject) {
console.log('hello world')
});
new Promise((resolve, reject) => {...code...})
.then(...code...)
.then(...code...)
.finally(...code...)
.catch(...code...); // <-- .catch에서 에러 객체를 다룰 수 있음
// 모던 자바스크립트 예제
async function f() {
return 100;
}
f().then(alert); // 100
// 모던 자바스크립트 예제 (살짝 수정)
async function f() {
return 100;
}
f().then(function(result) { // (**)
alert(result); // 1
return result * 2;
}).then(function(result) { // (***)
alert(result); // 2
return result * 2;
}).then(function(result) {
alert(result); // 4
return result * 2;
});
// 모던 자바스크립트 예제
async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("완료!"), 1000)
});
let result = await promise; // 프라미스가 이행될 때까지 기다림 (*)
alert(result); // "완료!"
}
f();
// 모던 자바스크립트 예제 (살짝 수정)
async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("완료!"), 3000)
});
let result = await promise; // 프라미스가 이행될 때까지 기다림 (*)
alert(result); // "완료!"
return 100
}
f().then(function(result) { // (**)
alert(result); // 1
return result * 2;
}).then(function(result) { // (***)
alert(result); // 2
return result * 2;
}).then(function(result) {
alert(result); // 4
return result * 2;
});
// 모던 자바스크립트의 잘못된 예제 (https://ko.javascript.info/async-await)
// 보라님에게 제보해주세요.ㅎㅎ 시간이 지나면서 보완이 되어벼러서 잘못된 내용이 된 것입니다.
let response = await fetch('https://raw.githubusercontent.com/paullabkorea/coronaVaccinationStatus/main/data/data.json');
let data = await response.json();
function one(){ two(); }
function two(){ three(); }
function three(){ console.log('end'); }
three()
two()
one()
anonymous // 가상 전역 컨텍스트, 이것도 마지막에 빠짐