callback
[드림코딩] 콜백함수 (4) : 콜백지옥 탈출, Promise (callback hell 코드개선하기)
Callback Hell 예시 이전시간에 만들었던 콜백지옥 예시다. // 기본세팅 class UserStorage { loginUser(id, password, onSuccess, onError) { setTimeout(() => { if ( (id === 'master' && password === 'master00') || (id === 'submaster' && password === 'submaster00') ) { onSuccess(id); } else { onError(new Error('not found')); } }, 2000); } getRoles(user, onSuccess, onError) { setTimeout(() => { if (user === 'master') { onSucce..
[드림코딩] 콜백함수 (3) : promise로 Error Handling하기 (reject, catch 활용)
Error Handling const turnonLaptop = () => new Promise((resolve, reject) => { setTimeout(() => resolve(`노트북 실행.`), 1000); }); const loginBlog = blog => new Promise((resolve, reject) => { setTimeout(() => reject(new Error(`Error! ${blog} => 블로그 진입.`)), 1000); }); const writePost = post => new Promise ((resolve, reject) => { setTimeout(() => resolve(`${post} => 게시 완료.`), 1000); }); producer 코드를 작성했..
[드림코딩] 콜백함수 (2) : 콜백지옥 탈출, Promise (State, Producing)
Promise Promise는 javascript에 내장되어있는 object로, 이를 통해서 비동기 코드를 깔끔하게 작성할 수 있다. 네트워크통신을 한다던지, 파일을 읽어온다던지 하는 등의 무거운 작업을 할 때는 오래 걸리므로 Promise로 처리한다. 무거운 작업을 처리하므로 사용자가 요청하지 않았는데도 일어나는 불필요한 네트워크통신(promise함수의 실행)을 방지해야 한다. new Promise가 만들어지는 순간, 해당 executor 함수가 자동으로 실행되므로 주의하자. promise는 아래 두 가지를 염두에 두면 좋다. 1. State(상태) process가 무거운 operation을 수행하고 있는지/완료되었다면 성공했는지/실패했는지의 상태 pending : operation을 수행 중인 상태 ..
[드림코딩] 콜백함수 (1) : 콜백지옥 예시
콜백지옥 // 기본세팅 class UserStorage { loginUser(id, password, onSuccess, onError) { setTimeout(() => { if ( (id === 'master' && password === 'master00') || (id === 'submaster' && password === 'submaster00') ) { onSuccess(id); } else { onError(new Error('not found')); } }, 2000); } getRoles(user, onSucces, onError) { setTimeout(() => { if (user === 'master') { onSuccess({name: 'Master', role : 'admin'..
[mdn, 드림코딩, 코딩애플] 콜백함수 (1) : 동기와 비동기 개념
콜백함수 자바스크립트는 동기적(synchronous) 언어이다. 이 말은 코드를 작성한 순서에 맞춰 동기적으로 실행된다는 말이다. 아래는 비동기적으로 실행되는 함수이다. console.log('1'); setTimeout(() => console.log('2'), 1000); console.log('3'); //1 //3 //2 Synchronous callback function printImmediately(print) { print(); } printImmediately(() => console.log('hello')); Asynchronous callback function printWithdelay(print, timeout) { setTimeout(print, timeout); } printW..