我正在开发我的第一个基于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();
}