主要是 Promise 和 await 的用法。
A 调用一个函数 func1,希望函数 func1 的返回值可以同步的返回,但是在 func1 返回的值 需要用到 异步函数 func2 的回调后的数据。
普通的情况下,func1 执行完后,异步的 func2 还没有执行完成,过一会才能执行到 func2 的回调,而这时func1 已经结束了。A 得到了错误的返回结果。
而用 Promise 包装了 func2 ,并且 await func1 方法。就可以一直等待 func2 执行完成后再赋值。
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);
});
});
网友评论