我在node.js&上遇到了一些困难。使用功能。我的问题是当我调用一个函数时,node.js不会等待它完成,我最终得不到任何返回值。这就是我所拥有的
exports.handle = (event, context,callback) => {
switch (event.request.type)
{
case "IntentRequest":
console.log('INTENT REQUEST')
switch(event.request.intent.name)
{
case "MoveDown":
readpos()
}
}}
function readpos(){
var position = []
//this code parses an array and gets me x y values
return position }
我的问题是我最终得到一个空数组,因为node.js运行得很快。我假设我必须做一些回调但我不确定如何实现回调。我曾经尝试过回读在线教程,但他们所有人都混淆了我,我似乎无法应用在线资源对我感冒的说法。我的主要语言是c ++&蟒。
答案 0 :(得分:0)
这很简单。你在回调中处理它。让我们来看看你的固定功能:
exports.handle = (event, context,callback) => {
switch (event.request.type)
{
case "IntentRequest":
console.log('INTENT REQUEST');
switch(event.request.intent.name)
{
case "MoveDown":
callback(readpos());
}
}
};
function readpos() {
var position = [];
//this code parses an array and gets me x y values
return position;
}
现在,当您调用句柄时,您只需将其称为:
handle(event, context,
// This is your callback function, which returns when done
function(position){
// When readPos() has run, it will return the value in this function
var newPos = position + 1; ...etc...
});
当然,您的代码应遵循惯例。回调旨在返回错误和结果,因此您也应该满足这一要求。但这只是回调的一般概念:)
答案 1 :(得分:0)
您需要使用回调
exports.handle = (event, context,callback) => {
switch (event.request.type)
{
case "IntentRequest":
console.log('INTENT REQUEST')
switch(event.request.intent.name)
{
case "MoveDown":
callback();
}
}}
用法
function readpos(){
var position = []
//this code parses an array and gets me x y values
Don't return here instead use the result directly or store into a global
}
handle(event,context,readpos);