-
프로미스 기초concept/javascript 2020. 6. 26. 03:53
let users = ['oana', 'mino', 'ben', 'wil'] function myPromise(sec){ return new Promise((resolve, reject) => { setTimeout(() => { if(users){ resolve(users) } else { reject(users) } }, sec * 1000) }) }
new Promise로 새로운 promise 객체를 생성하고
if 조건문에 성립할 때는 resolve를 통해 users를 내보내준다.
그래서 myPromise 함수를 실행하고 뒤에 .then을 붙이게 되면 그 parameter로 resolve() 안에 있는 users가 나오게 되는 것이다.
이게 바로 메소드 체이닝!
메소드 체이닝이란?
메서드가 객체를 반환하게 되면, 메서드의 반환 값인 객체를 통해 또 다른 함수를 호출할 수 있다.
이러한 프로그래밍 패턴을 메서드 체이닝(Method Chaining) 이라 부른다.myPromise(1).then((result)=> { // ** 이 때 result는 users console.log(1, result); // 1 ["oana", "mino", "ben", "wil"] return myPromise(1) // ** 여기서 리턴을 해줘야 다음 then의 result로 users를 받을 수 있다. }).then((result)=> { console.log(2, result); // 2 ["oana", "mino", "ben", "wil"] return myPromise(1) }).then((result)=> { console.log(3, result); // 3 ["oana", "mino", "ben", "wil"] }).then(()=> { console.log('done!') // done! })
'concept > javascript' 카테고리의 다른 글
콜백 때려잡기 (0) 2020.06.26 콜백 (callback) (0) 2020.05.27 Subclassing - understanding prototype chain (Object.create()의 활용법) (0) 2020.05.10 prototype vs __proto__ vs constructor (0) 2020.05.09 Instantiation Patterns (인스턴스화 패턴) (0) 2020.05.08