js promise 風格編程

使用q

這種方式,極大的避免了回調地獄的狀況產生,之後打算長久用這種方式。
再寫Nodejs,不再擔憂這個問題了。
如下實例,做爲鏈接數據庫的公共方法。javascript

/**
 * Created by ThinkCat on 15/11/24.
 */
var mysql = require('./db/db');
var Q = require('q');

//var getConnection = function(){
//    var deferred = Q.defer();
//    mysql.MySqlDb.getConnection(function(err,connection){
//        console.log('connection:',connection);
//        deferred.resolve(connection);
//    });
//    return deferred.promise;
//}
//
//var doQuery = function(connection){
//    var deferred = Q.defer();
//    connection.query('select * from user',function(err,rows){
//        console.log('rows:',rows);
//        deferred.resolve(rows);
//    });
//    return deferred.promise;
//}

var getConnection = function(){
    var deferred = Q.defer();
    deferred.resolve('this is a connection');
    return deferred.promise;
};

var doQuery = function(connection){
    var deferred = Q.defer();
    deferred.resolve(connection + ',select * from user');
    return deferred.promise;
};

function main(){
    getConnection()
        .then(doQuery)
        .done(
            function(data){
                console.log('final:',data);
            },
            function(err){
                console.log('error:',err);
            }
        );
}


main();
相關文章
相關標籤/搜索