javascript - 如何从子函数中更改函数的返回值 (JavaScript)

标签 javascript function scope

当检测到假期时,我无法让以下函数返回 true。警报正确触发,但结果始终返回 false。我知道这是变量范围的问题,但我不确定如何正确修复它。

function isHoliday(date,currentProvince) {
  var calDate = new Date(date);
  var result = false;
  $.get(
    "@Url.Content("~/Holidays/HolidayList/?province=")"+currentProvince, 
    function(data) {
      for (h=0; h<data.length; h++) {
        holidayDate = new Date(
          parseInt(data[h].date.replace("\/Date\(","").replace("\)\/",""))
        );
        if (holidayDate.getTime() == calDate.getTime()) {
          alert("HOLIDAY");
          result = true;
        }
      }
    }
  );

  return result;
}

我是否能够以某种方式更改 $.get 语句中函数(数据)的参数以将变量传入和传出?或者有更好的方法吗?

最佳答案

该函数在ajax调用完成之前返回;这就是 $.get 中的回调的用途,以及为什么这是异步

如果您想从此 ajax 调用获取结果,那么您需要将其余逻辑连接为此调用的回调,如下所示:

function isHoliday(date,currentProvince, callback) {

                var calDate = new Date(date);
                $.get("@Url.Content("~/Holidays/HolidayList/?province=")"+currentProvince, function(data) {
                    for (h=0; h<data.length; h++) {
                        holidayDate= new Date(parseInt(data[h].date.replace("\/Date\(","").replace("\)\/","")));
                        if (holidayDate.getTime() == calDate.getTime()) {
                            alert("HOLIDAY");
                            callback(true);
                        }
                        else
                        {
                            callback(false);
                        }
                    }
                 });
             }

关于javascript - 如何从子函数中更改函数的返回值 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554307/

相关文章:

javascript - 需要解释 javascript 中的范围问题

javascript - JS中无法访问函数作用域之外的变量

php - 如何从数组键创建变量

javascript - console.log 在 jQuery 中不起作用

javascript - 使用 Jquery 淡入和淡出我的文本,还显示 :none

javascript - 如何在父组件中渲染子组件函数的jsx

函数可以更改调用函数范围内的变量值吗?

javascript - 在一个有序的标量数组中,给定一个数字,找到前面较小的和后面较大的。

javascript - 如何解决模板包错误?

function - 如何从 qmake 替换函数中更改变量