主要是 Promise 和 await 的用法。
A 調用一個函數(shù) func1,希望函數(shù) func1 的返回值可以同步的返回徊都,但是在 func1 返回的值 需要用到 異步函數(shù) func2 的回調后的數(shù)據(jù)广辰。
普通的情況下主之,func1 執(zhí)行完后槽奕,異步的 func2 還沒有執(zhí)行完成粤攒,過一會才能執(zhí)行到 func2 的回調囱持,而這時func1 已經(jīng)結束了。A 得到了錯誤的返回結果盔几。
而用 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);
});
});