JavaScript中嵌套函数的返回值

JavaScript中嵌套函数的返回值,javascript,function,cordova,Javascript,Function,Cordova,我想通过一些插件从cordova/javascript应用程序中的嵌套函数返回一个值,但它无法正常工作: if(restaurantsNearby == true) { if(restaurantNameArr.length == 1){ return restaurantNameArr[0].rID; } else { return actionSheet(restaurantNameArr); } } var actionSheetC

我想通过一些插件从cordova/javascript应用程序中的嵌套函数返回一个值,但它无法正常工作:

if(restaurantsNearby == true) {
    if(restaurantNameArr.length == 1){
        return restaurantNameArr[0].rID;
    } else {
        return actionSheet(restaurantNameArr);
    }
}

var actionSheetCallback = function(buttonIndex) {
    return window.restaurantNameArr[buttonIndex-1].rID;
};

function actionSheet(restaurantNameArr) {
    var restaurantNames = new Array();
    $.each(restaurantNameArr, function(key, value) {
        restaurantNames.push(value['rName']);
    });
  var options = {
    'title': 'Where are you?',
    'buttonLabels': restaurantNames,
    'androidEnableCancelButton': false,
    'winphoneEnableCancelButton': false
  };
  window.restaurantNameArr = restaurantNameArr;
  window.plugins.actionsheet.show(options, actionSheetCallback);
  return actionSheetCallback;
};
我想返回window.restaurantNameArr[buttonIndex-1]的值。使用第一个if语句进行rID,但它不起作用


编辑餐厅名称看起来像[{rID:'188',rName:'Taverne'},{rID:'192',rName:'Pub'},{rID:'193',rName:'Ducis'},…]

你说的对象是

{ rid : { rid : {} } }
它可能不是那样嵌套的。放弃

if(restaurantNameArr.length == 1){
    return restaurantNameArr[0]; //.rID;
} else {

它是这样嵌套的->[{rID:'188'},{rID:'192'},{rID:'193'},…]我知道,但你不是这样编码的。返回rid,然后再次尝试读取rid。如果只有一个数组,则不返回数组,因此这也是一个问题。谢谢您的评论,但实际上我对return actionSheetrestaurantNameArr有一个问题;,另一个代码段可以工作fine@epascarello如果回调函数是在异步函数中调用的,那么它将不起作用。不能从异步函数返回值。检查异步函数返回值的情况。@frank该代码中哪里有异步函数?是否删除了“ifrestaurantNameArr.length==1”条件?actionSheetrestaurantNameArr1