Node.js 等待回调

主要是 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);
            });

        });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容