node.js異步編程解決方案之Promisenode
var dbBase = require('../db/db_base'); var school_info_db = require('../db/school_info_db'); function dbService(wxCorpid) { return new Promise(function(resolve, reject) { school_info_db.get_school_info(wxCorpid, function(err, val) { resolve(val); }); }) .then(function(schoolInfo) { return new Promise(function(resolve, reject) { resolve(dbBase.init(schoolInfo.dbConnString)); }) }) .catch(function(error) { // 處理前面Promise產生的錯誤 console.log('數據庫鏈接池建立失敗'); }); } async function optErrLog(wxCorpid) { var mysql = await dbService(wxCorpid); Promise.resolve(mysql) .then(function(mysql) { return new Promise(function(resolve, reject) { mysql.query('select * from bas_school;', function(err, rlt, feld) { resolve(rlt); }) }) }) .then(result => console.log(JSON.stringify(result))) } module.exports = { optErrLog: optErrLog }