nodejs查詢數(shù)據(jù)庫后將值返回前端

nodejs最大的優(yōu)勢也是大家用著最為難以理解的一點(diǎn),就是它的異步功能,它幾乎所有的io操作都是異步的创肥,這也就導(dǎo)致很多人不理解也用不習(xí)慣迎献。

前幾天在項(xiàng)目中遇到這樣一個問題瞎访,就是前端觸發(fā)某個請求,想要查詢數(shù)據(jù)庫并且返回這個值吁恍,但是無論如何都返回不回來扒秸,因?yàn)闆]等到查詢完畢,就過早的將空數(shù)據(jù)返回回來了冀瓦,這個困擾了我許久伴奥,當(dāng)時想到一些替代的方法,都是不治本的方法翼闽,今天打算用promise重新解決這個問題拾徙。

promise的作用是讓原本異步執(zhí)行的代碼變成類似同步執(zhí)行,就是在執(zhí)行完之后感局,會將結(jié)果返回回來尼啡。當(dāng)然,我目前也只對promise只有一個淺顯的理解询微,在之后也會深入學(xué)習(xí)的崖瞭,下面說一下這個問題是怎么解決的。

app.use(controller.get('/aaa', function*() {
    this.set('Cache-Control', 'no-cache');
    var data = yield service.bbb();
    this.body = data;
}));

我們可以使用koa框架中的yield撑毛,promise可以作為它的返回參數(shù)书聚。

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就可以實(shí)現(xiàn)我們以前直接return的結(jié)果了,這樣就優(yōu)雅的將異步代碼變成了同步的了~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末藻雌,一起剝皮案震驚了整個濱河市雌续,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹦疑,老刑警劉巖西雀,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歉摧,居然都是意外死亡艇肴,警方通過查閱死者的電腦和手機(jī)腔呜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來再悼,“玉大人核畴,你說我怎么就攤上這事〕寰牛” “怎么了谤草?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長莺奸。 經(jīng)常有香客問我丑孩,道長,這世上最難降的妖魔是什么灭贷? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任温学,我火速辦了婚禮,結(jié)果婚禮上甚疟,老公的妹妹穿的比我還像新娘仗岖。我一直安慰自己,他們只是感情好览妖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布轧拄。 她就那樣靜靜地躺著,像睡著了一般讽膏。 火紅的嫁衣襯著肌膚如雪檩电。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天桅打,我揣著相機(jī)與錄音是嗜,去河邊找鬼。 笑死挺尾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的站绪。 我是一名探鬼主播遭铺,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恢准!你這毒婦竟也來了魂挂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤馁筐,失蹤者是張志新(化名)和其女友劉穎涂召,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敏沉,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡果正,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年炎码,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秋泳。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡潦闲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迫皱,到底是詐尸還是另有隱情歉闰,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布卓起,位于F島的核電站和敬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏戏阅。R本人自食惡果不足惜昼弟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饲握。 院中可真熱鬧私杜,春花似錦、人聲如沸救欧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笆怠。三九已至铝耻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹬刷,已是汗流浹背瓢捉。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留办成,地道東北人泡态。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像迂卢,于是被迫代替她去往敵國和親某弦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 弄懂js異步 講異步之前而克,我們必須掌握一個基礎(chǔ)知識-event-loop靶壮。 我們知道JavaScript的一大特點(diǎn)...
    DCbryant閱讀 2,697評論 0 5
  • 異步編程對JavaScript語言太重要。Javascript語言的執(zhí)行環(huán)境是“單線程”的员萍,如果沒有異步編程腾降,根本...
    呼呼哥閱讀 7,298評論 5 22
  • 特別說明,為便于查閱碎绎,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 479評論 0 0
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持螃壤,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券抗果,享受所有官網(wǎng)優(yōu)惠,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 6,373評論 9 19
  • KDC server搭建 基礎(chǔ)環(huán)境配置 安裝必要軟件 [root@kdc-server ~]# yum insta...
    清風(fēng)徐來丶丶閱讀 4,869評論 2 1