= 비동기 작업의 최종성공 또는 실패결과를 나타내는 객체
cf> 콜백함수를 사용하지 않는 이유
콜백함수가 많아지면 가독성이 떨어지기 때문
new Promise();
/// 또는
new Promise(function (resolve,reject) {
})
new Promise(function(resolve, reject) {
resolve('성공');
});
// 예시
function getData() {
return new Promise(function(resolve, reject) {
var data = 100;
resolve(data);
});
}
// resolve()의 결과 값 data를 resolvedData로 받음
getData().then(function(resolvedData) {
console.log(resolvedData); // 100
});
async function getPromiseData() {
console.log(await getData())
}
getPromiseData() // 100
new Promise(function(resolve, reject) {
reject('실패');
});
// 예시
function getData() {
return new Promise(function(resolve, reject) {
reject(new Error("Request is failed"));
});
}
// reject()의 결과 값 Error를 err에 받음
getData().then().catch(function(err) {
console.log(err); // Error: Request is failed
});
Promise.reject(reason)
거부된 Promise 를 리턴한다.
Promise.reject("Testing static reject").then(function(reason) {
// 호출되지 않음
// resolve 자리라서 호출되지 않음
}, function(reason) {
console.log(reason); // "Testing static reject"
});
Promise.reject(new Error("fail")).then(function(error) {
// 호출되지 않음
// resolve 자리라서 호출되지 않음
}, function(error) {
console.log(error); // Stacktrace
});
Promise.resolve(value)
주어진 값 ( value )으로 이행되는 Promise.then 객체를 반환한다 .
const promise1 = Promise.resolve(123);
promise1.then((value) => {
console.log(value);
// expected output: 123
});