Node.js 等待回調(diào)

主要是 Promise 和 await 的用法。
A 調(diào)用一個函數(shù) func1,希望函數(shù) func1 的返回值可以同步的返回,但是在 func1 返回的值 需要用到 異步函數(shù) func2 的回調(diào)后的數(shù)據(jù)。
普通的情況下,func1 執(zhí)行完后,異步的 func2 還沒有執(zhí)行完成,過一會才能執(zhí)行到 func2 的回調(diào),而這時func1 已經(jīng)結(jié)束了。A 得到了錯誤的返回結(jié)果。
而用 Promise 包裝了 func2 ,并且 await func1 方法。就可以一直等待 func2 執(zhí)行完成后再賦值。

var token = await User.login(ctx.request.body.code);
console.log("token "+token);
module.exports = {
    login: (code) => {

}
User.login(
return new Promise(function (resolve, reject) {
            https.get(wxjscode2sessionUrl, (resp) => {
              var data="";
                resp.on('data', (chunk) => {
                    data += chunk;
                });
                resp.on('end', () => {
                        resolve(data);
                    });
                })
            }).on("error", (err) => {
                console.log("Error: " + err.message);
            });

        });
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 異步編程對JavaScript語言太重要。Javascript語言的執(zhí)行環(huán)境是“單線程”的,如果沒有異步編程,根本...
    呼呼哥閱讀 7,405評論 5 22
  • 弄懂js異步 講異步之前,我們必須掌握一個基礎(chǔ)知識-event-loop。 我們知道JavaScript的一大特點(diǎn)...
    DCbryant閱讀 2,884評論 0 5
  • 你不知道JS:異步 第三章:Promises 在第二章,我們指出了采用回調(diào)來表達(dá)異步和管理并發(fā)時的兩種主要不足:缺...
    purple_force閱讀 2,243評論 0 4
  • 你不知道JS:異步 第三章:Promises 接上篇3-1 錯誤處理(Error Handling) 在異步編程中...
    purple_force閱讀 1,497評論 0 2
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 8,776評論 0 29

友情鏈接更多精彩內(nèi)容