Node.js 等待回调

2017-11-26  本文已影响587人  FrankFan

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

        });
上一篇 下一篇

猜你喜欢

热点阅读