nodejs 데이터베이스 조회 후 값 을 전단 으로 되 돌려 줍 니 다.

1958 단어
nodejs 의 가장 큰 장점 도 모두 가 가장 이해 하기 어 려 운 점 이다. 바로 그의 비동기 기능 이다. 거의 모든 io 작업 이 비동기 적 이어서 많은 사람들 이 이해 하지 못 하고 익숙 하지 않다.
며칠 전에 프로젝트 에서 이런 문 제 를 만 났 습 니 다. 바로 전단 에서 특정한 요 구 를 촉발 하여 데이터 베 이 스 를 조회 하고 이 값 을 되 돌려 주 려 고 했 습 니 다. 그러나 어떻게 든 돌아 오지 못 했 습 니 다. 조회 가 끝 날 때 까지 기다 리 지 않 고 너무 일찍 빈 데 이 터 를 되 돌려 주 었 습 니 다. 이것 은 저 를 오랫동안 괴 롭 혔 습 니 다. 그 당시 에 대체 하 는 방법 이 생각 났 는데 모두 근본 적 인 방법 이 아니 었 습 니 다.오늘 은 promise 로 이 문 제 를 다시 해결 할 계획 이다.
promise 의 역할 은 원래 비동기 적 으로 실 행 된 코드 를 동기 화 실행 과 유사 하 게 만 드 는 것 이다. 즉, 실행 이 끝 난 후에 결 과 를 되 돌려 주 는 것 이다.물론 저 는 현재 promise 에 대해 간단 한 이해 만 가지 고 있 습 니 다. 그 후에 도 깊이 공부 할 것 입 니 다. 다음은 이 문 제 를 어떻게 해결 하 는 지 말씀 드 리 겠 습 니 다.
app.use(controller.get('/aaa', function*() {
    this.set('Cache-Control', 'no-cache');
    var data = yield service.bbb();
    this.body = data;
}));

koa 프레임 워 크 의 yield 를 사용 할 수 있 습 니 다. promise 는 되 돌아 오 는 매개 변수 로 사용 할 수 있 습 니 다.
exports.bbb = function () {
    var promise = new Promise(function (resolve, reject) {
    var mysql = require('mysql');
    var connection = mysql.createConnection({
        host: '127.0.0.1',
        user: 'root',
        password: 'root',
        port: '3306',
        database: 'db_biology'
    });
    connection.connect();
    connection.query(
        "SELECT * FROM Sheet1",
        function selectCb(err, results) {
            if (results) {
                console.log(results);
                //resolve(results);
                resolve(results);
            }
            if (err) {
                console.log(err);
            }
            connection.end();
        }
    );
});
promise.then(function (value) {
    console.log(value);
    return value;
    // success
}, function (value) {
    // failure
});
return promise;
};

promise 만 이용 하면 우리 가 예전 에 직접 return 한 결 과 를 실현 할 수 있 습 니 다. 그러면 우아 하 게 비동기 코드 를 동기 화 할 수 있 습 니 다 ~

좋은 웹페이지 즐겨찾기