Node.js使用函数和回调

时间:2017-09-22 20:48:55

标签: javascript node.js callback

我在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 ++&蟒。

2 个答案:

答案 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);