通过回调实现异步或修复

时间:2018-08-21 14:28:08

标签: javascript node.js asynchronous callback asynccallback

我正在开发我的第一个基于NodeJS的Alexa技能,但是遇到了一些异步错误,其中第一次运行返回undefined,第二次运行输出第一次运行中的调用。我调查了一下,发现正确修复回调或实现Async模块将解决此问题,但是我不确定哪个更好(为什么)以及如何在当前代码中正确使用这些解决方案。

我正在寻找可以解释差异的人,以及如何在我的技能中实施更合适的解决方案。

谢谢!

"use strict"

const dbhVersion = 0.01;
var say;

//
// exported module
//

module.exports = {
  version: dbhVersion,
  //
  // Core Voice UI Helpers
  //
  getSomeStuff() {
    httpsGet(body => {
      const info = JSON.parse(body);
      say= info.x.y;
      console.log(say);
    });
   return say;
  }
};

function httpsGet(callback) {
    var options = {
       host: 'api.website.com',
       path: '/a/b/c',
       json: true,
       headers: {
         'Authorization': 'Bearer secretsecret'
       }
    };

    const https = require('https');

    var req = https.get(options, res => {
        res.setEncoding('utf8');
        var returnData = "";

        res.on('data', chunk => {
            returnData = returnData + chunk;
        });

        res.on('end', () => {
            callback(returnData);  
        });

    });
    req.end();
}

0 个答案:

没有答案