setTimeout
때문에 콘솔에 "A", "B", "C"의 순서가 랜덤으로 찍힘.
- 콜백 함수를
printString
의 인자로 넣어줌 => 콜백함수의 실행 시점을printString
이 정할 수 있음
promise 객체 만드는 문법
let promise = new Promise(function(resolve, reject) { ~~~ });
promise의 실행 함수(excutour)
new Promise
에 전달되는 함수. (function(resolve, reject) {~~~}
)- 실행함수의 인자인
resolve
와reject
는 자바스크립트에서 자체 제공하는 콜백 함수. 실행 함수에서 둘 중 하나를 반드시 호출해야 한다.
프로미스 객체를 리턴
🌟 then의 콜백함수의 리턴값이 프로미스 객체일 경우 👉🏽 then의 리턴값 그 자체가 된다.
🌟 then의 콜백함수의 리턴값이 어떠한 값일 경우 👉🏽 then이 리턴하는 프로미스 객체의 PromiseResult 값이 된다.
then의 콜백함수의 인자는 앞에서 넘어온 프로미스 객체의 PromiseResult 값이다.
*printString
은 Promise를 리턴 (=printString
은 프로미스화 된 함수)
- Promise는 나름의 콜백함수를 인자로 가짐
async
키워드를 쓴 함수는 항상 프라미스를 리턴한다. (프라미스가 아닌 값을 리턴하더라도 이행 상태의 프라미스로 값을 감싸서 '이행된 프라미스'가 리턴되도록 한다.)await
키워드로 비동기 함수들을 마치 동기적인 것처럼 쓸 수 있다. await
키워드를 쓴 함수의 리턴값 : fullfilled 혹은 rejected된 값. (👉🏽 값을 밖으로 뺄 수 있다! but 남발하면 안됨. await 키워드 쓴 함수들끼리는 다시 동기적 작업...)