promise는 비동기를 값으로 만드는데 의미가 있다. (1급으로 다룬다.)
ex)
function f(a){
return new Promise(resolve => setTimeout(()=>resolve(a), 100));
}
return을 한다는것이 중요
대기, 성공, 실패를 값으로 다룬다. (콜백 방식처럼 그냥 코드로서 다루고 있는것이 아니다.)
promise 객체가 반환되면 원하는 시점에 이를 이용해 작업을 할 수 있다.
1급 객체이기 때문에, 다른 함수의 parameter, 변수, 등 으로 다룰 수 있다.
const delay = a =>new Promise(resolve => setTimeout(()=>resolve(a), 100));
const go = (a, f) => a instanceOf Promise ? a.then(f) : f(a);
const add5 = (a) => a+5;
const d = delay(10);
go(go(d, add5), console.log);