이 포스트는 순수하게 필자의 생각을 정리한 것이므로 잘못된 내용이 있을 수 있습니다. 피드백 환영합니다.
function doSyncWork () {
return !!Math.round(Math.random());
// true, false를 랜덤으로 반환함
}
let A = new Promise((resolve, reject) => {
let work = doSyncWork();
if (work) resolve(work);
else reject('invalid work');
})
console.log(A);
// 이미 fullfilled 혹은 reject 처리가 되어 있다
function doSyncWork () {
return !!Math.round(Math.random());
// true, false를 랜덤으로 반환함
}
let A = new Promise((resolve, reject) => {
let work = doSyncWork();
if (work) resolve(work);
else reject('invalid work');
})
A.then(() => console.log('async')).catch(() => console.log('async'));
console.log(A);
결과 :
Promise <Fullfilled> or <rejected>
'async'
// then과 catch는 먼저 작성되었음에도 불구하고, console.log(A) 가 먼저 실행되었다
doReallyAsyncWork1() //프로미스를 리턴하는 비동기 api
.then(result => syncWork1(result)) // 만약 SyncWork이 반환하는 것이 promise가 아니면,
.then(result => syncWork2(result)) // then 안에서는 Promise.resolve()로 감싸서
.then(result => syncWork3(result)) // 강제로 promise resolve 처리를 해서 내보낸다.
.then(result => doReallyAsyncWork2())
.catch(err => alert(err))