当前位置: 首页 > 面试题库 >

在JavaScript回调函数中设置局部变量

艾嘉石
2023-03-14
问题内容

我对JavaScript比较陌生,我想我知道回调函数的工作原理,但是在搜索Web几个小时后,我仍然不明白为什么我的代码不起作用。

我正在提出一个AJAX请求,该请求返回一个字符串数组。我正在尝试将此数组设置为局部变量,但是一旦执行回调函数,它似乎就失去了它的值。

    var array;

    $.ajax({
        type: 'GET',
        url: 'include/load_array.php',
        dataType: 'json',
        success: function(data){
            array = data;
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert("Error loading the data");
        }
    });

    console.debug(array);

在控制台中,array显示为未定义。谁能向我解释为什么未设置此参数,以及如何在回调函数中设置局部变量。


问题答案:

这里的问题是console.logajax调用异步执行时同步执行。因此它在回调完成之前运行,因此仍显示array为,undefined因为success尚未运行。为了使此工作有效,您需要将console.log通话延迟到success完成后。

$(document).ready(function() {
    var array;

    var runLog = function() {
      console.log(array); 
    };

    $.ajax({
      type: 'GET',
      url: 'include/load_array.php',
      dataType: 'json',
      success: function(data){
        array = data;
        runlog();
    }});
});


 类似资料:
  • 问题内容: 有没有一种简单的方法可以将“回调”功能设置为在javascript中打开的新窗口?我想在新窗口中运行父函数,但我希望父函数能够设置此特定函数的名称(因此不应在新的Windows页面中对其进行硬编码)。 例如在父母中,我有: 在子窗口中,我要: 问题是如何创建它和功能。我虽然想将函数的名称作为查询参数发送到新窗口(服务器端脚本在生成的子HTML中生成适当的函数调用),但是我在考虑是否还有

  • 问题内容: 如果我有一个函数(在Python 2.5.2中)像这样: 我的问题是: 如何在 不 使用函数内部的 locals()的 情况下 从外部 获取 函数的局部变量(a,b)?(反射的种类) 是否可以从外部设置局部变量(例如 x ),以便注释行起作用?(我知道这听起来很奇怪)。 提前致谢。 编辑 : 每个人都在寻找用例。但这是一个奇怪的情况。(不要怪我,我没有创造出来)。这是场景: 我有一个包

  • 当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。 使用局部变量 例7.3 使用局部变量 #!/usr/bin/python # Filename: func_local.py deffunc(x):     print'x is', x    

  • 在中设置回调函数时,要使用什么? 我尝试将函数设置为类型<code>void。将其更改为<code>void __stdcall,但如何使用<code>GLFW的<code>typedef,例如<code>GLFW*fun?我认为这是正确的选择。我真的需要一个示例源代码。 顺便说一句,我将GLFW定义为 更新 我的代码是这样的: (我以三种方式做到了) 一 原型。因为在下面,所以这个给我一个编译错

  • 首先我想问一下这是不是可能的,设置值为全局变量在异步函数或承诺? 如果是,那么为什么每个可用的教程/网站都在教程中使用console.log(结果),但从来没有使用它将其赋值给variable。 例如:

  • 本文向大家介绍如何在函数中设置一个全局变量相关面试题,主要包含被问及如何在函数中设置一个全局变量时的应答技巧和注意事项,需要的朋友参考一下 python中的global语句是被用来声明全局变量的。