這種方式,極大的避免了回調地獄的狀況產生,之後打算長久用這種方式。
再寫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();