如何使用递归调用从函数返回javascript数据

如何使用递归调用从函数返回javascript数据,javascript,recursion,Javascript,Recursion,我有一个递归函数,我需要在函数完成后返回一些数据 // Set Up my Database paramaters var coachdb = new AWS.DynamoDB({ ... }); // This tracks the array index of the current parameter. var pos = 0; function callback(err, data) { if (err) { console.log(err, err.stack);

我有一个递归函数,我需要在函数完成后返回一些数据

// Set Up my Database paramaters
var coachdb = new AWS.DynamoDB({
  ...
});

// This tracks the array index of the current parameter.
var pos = 0;

function callback(err, data) {
  if (err) { 
    console.log(err, err.stack);
  } else if (data.Items.length > 0) {

    //return data.Items  // Where I need something here to return data

  } else if (++pos < params.length) {      // Increment the index.
    coachdb.query(params[pos], callback);  // Recursive call.
  }
}

coachdb.query(params[pos], callback); // Kick off the series of calls
//设置我的数据库参数
var COACHB=新AWS.DynamoDB({
...
});
//这将跟踪当前参数的数组索引。
var-pos=0;
函数回调(错误,数据){
如果(错误){
日志(err,err.stack);
}else if(data.Items.length>0){
//return data.Items//此处我需要一些东西来返回数据
}如果(++pos
函数中的所有内容都正常工作。我正在查询我的数据库,只是在遍历可能的参数,直到找到正确的参数,然后函数结束


但是,我不确定如何将数据传递到函数外部。如果有任何帮助,我们将不胜感激。

这是不可能的,您只需返回在回调中写入逻辑所需的数据

编辑:如果你不想有凌乱的代码,你需要重构你的代码并将代码提取到不同的方法中

function callback(err, data) {
  if (err) { 
    errorLogic(err);
  } else if (data.Items.length > 0) {
    successLogic(data.Items);
  } else if (++pos < params.length) {      // Increment the index.
    coachdb.query(params[pos], callback);  // Recursive call.
  }
}
函数回调(错误,数据){
如果(错误){
错误逻辑(err);
}else if(data.Items.length>0){
成功逻辑(数据项);
}如果(++pos
另一个想法是使用承诺来规避回调的需要。以nano为例()。本质上,您有一个“在某个时间”包含数据库数据的对象,此时将调用一个事件函数

伪代码:

var myPromise = couchdb.insert(...);

 myPromise.success(function (mydata){
    // here you can fiddle around with your data
 })

我该怎么做?这样做是一个好方法,还是太麻烦了?@JaredWhipple检查我的编辑