본문 바로가기

728x90

기타/node js

(32)
자바스크립트 비동기 promise, 콜백함수 예제 오늘은 자바스크립트의 비동기 처리에 대해 알아보도록 하겠습니다. 비동기 처리란 무엇일까요? 동기 처리는 요청을 보낸 후 해당 응답을 받고 다음 동작을 수행하는 방식입니다. 비동기는 요청을 보낸 후 응답을 받기 전에 다음 동작을 수행하는 방식으로, 병렬로 처리된다고 생각하시면 됩니다. 서버에 어떤 요청을 보낸다고 할 때 분기가 발생한다고 볼 수 있지요. 비동기 처리에는 크게 두 가지 방식이 있습니다. 콜백 함수, Promise (이밖에도 방법은 있지만 오늘은 이 두 가지를 알아보도록 하겠습니다.) 콜백 함수는 비동기 처리에서 응답을 받았을 때 실행할 코드입니다. 예를 들어 서버에서 특정 데이터를 받아 표시해 주어야 한다면 데이터를 표시해 주는 코드는 콜백 함수에 넣어줘야 하지요. 콜백 함수의 예시는 아래와..
Promise map 사용법 오늘은 promise.map에 대해서 알아보도록 하겠습니다. promise.map은 .push와 .all을 하나로 대체하는 함수입니다. promise.map은 mapper함수에 의해 반환된 promise가 기다리고 있고, 모든 값에 대해 fulfill되었을 때 비로소 .then뒤의 코드를 실행할 수 있다. 만약 한가지라도 reject되면 .catch가 실행됩니다. 예시를 통해 알아보도록 하겠습니다. 예시는 여러개의 url에 접속해 처리한 후 한 번에 데이터를 받아오는 코드입니다. const needle = require('needle') const Promise = require('bluebird') Promise.promisifyAll(needle) var urls = ['https://www.nave..
nodejs bluebird promisify 예제 오늘은 promise를 사용할 수 있도록 해 콜백 지옥에서 우리를 구원해줄 bluebird라는 패키지에 대해 알아보도록 하겠습니다. bluebird는 인기가 아주 많은 패키지입니다. 주간 다운로드 건수가 2000만 번이나 됩니다. npm i bluebird를 통해 다운로드 할 수 있습니다. bluebird를 사용하는 이유는 promise를 다른 패키지에서 사용하기 위함입니다. promise는 비동기 처리의 실패, 이행 등의 상태를 담은 객체로 콜백 함수보다 효율적으로 비동기 처리를 도와줍니다. needle의 비동기 처리를 활용하여 구현하면 다음과 같습니다. 두 가지 url에서 데이터를 받아온다고 했을 때 아래와 같이 콜백 함수를 두 번 호출해야 합니다. const needle = require('need..
nodejs mysql 연동하기 오늘은 nodejs에서 mysql데이터 베이스를 연동하는 방법에 대해 알아보도록 하겠습니다. 우선 npm i mysql을 통해 패키지를 다운로드해야 합니다. 그런 후 아래와 같이 코드를 작성해주세요. mysql에 test라는 데이터 베이스가 있다는 가정하에 진행되는 예제이므로 아파치 서버를 설치하시고 그곳에 test라는 데이터 베이스를 만들어야 구동될 것입니다. 서버를 설치하는 방법은 검색을 통해 스스로 해주시기 바랍니다. 저 같은 경우에는 bitnami를 통해 설치했습니다. 본격적으로 알아보도록 하죠. 아래 코드를 하나하나 뜯어보도록 하죠. var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', ..
자바스크립트 프로미스(Javascript Promise) then catch에 대해 알아보자. 오늘은 promise의 상태와 그에 따른 진행 방식에 대해 알아보도록 하겠습니다. function getNum() { return new Promise(function (resolve, reject) { var num = 10; }); } getNum().then(function (resolvednum) { console.log(2) console.log(resolvednum); }) 위의 코드를 실행하면 어떤 결과가 나올까요? 1. 2 10 2. 아무것도 나오지 않는다. 정답은 2번입니다. 프로미스 객체는 resolve, reject 되기 전까지 pending(대기)합니다. resolve 혹은 reject가 실행되면 다음으로 넘어갈 수 있지요. function getNum() { return new P..
express 라우터(Router) 사용법 분리 방법 라우팅이란 url의 정의와 url이 클라이언트 요청에 응답하는 방식입니다.어떤 네트워크 안에서 데이터를 통신할 때 최적의 경로를 선택하는 과정입니다.express 라우터 분리방법은 express.Router부분으로 내려가셔서 보시면 됩니다. express에는 app.method(path, hadler)를 통해 라우터를 정의합니다.app은 express의 인스턴스이고 method는 http 요청 메서드로, GET, POST, PUT, DELETE가 있습니다.PATH는 서버의 경로이고 HANDLER는 서버에서 받아온 정보를 처리하는 함수가 들어가는 부분입니다. 예시를 통해 살펴보도록 하겠습니다.var express = require('express'); var app = express(); app.get('..
Promise 콜백지옥 탈출 resolve,reject 사용법 오늘은 Promise 콜백 지옥 탈출 resolve, reject 사용법에 대해 알아보도록 하겠습니다. 아래의 코드를 보면 에러가 발생했을 때 실행되는 failureCallback함수가 세 번이나 들어갑니다. 콜백 함수를 사용하면 이러한 단점이 발생합니다. 콜백을 많이 할수록 코드 복잡도가 급격히 올라가지요. do1(function(result) { do2(result, function(result_2) { do3(newResult, function(result_3) { console.log(result_3); }, failureCallback); }, failureCallback); }, failureCallback); promise then을 사용해주면 코드가 훨씬 단순해지고 에러 함수는 한 번만 불..
javascript promise사용 방법 Promise는 비동기 작업의 최종 성공 혹은 실패를 담고 있는 객체입니다. 우리는 알게 모르게 이미 만들어진 promise들을 많이 사용하고 있습니다. 오늘은 promise를 사용하는 방법에 대해 알아보도록 하겠습니다. 비동기로 텍스트 파일을 불러오는 함수가 있다고 가정해 봅시다. 성공했을 때 실행할 콜백 함수와 실패했을 때 실행할 콜백 함수를 인자로 넣어주어야 합니다. function successCallback(){ console.log("success") } function failureCallback(){ console.log("fail") } createTextfileAsync(Textsetting, successCallback,failureCallback) 위의 예시는 콜백함수를 인자로 넣어..

728x90