Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按顺序运行Javascript函数(一个接一个)_Javascript - Fatal编程技术网

按顺序运行Javascript函数(一个接一个)

按顺序运行Javascript函数(一个接一个),javascript,Javascript,当我尝试以下方法时: if(myFunction() == "3") { alert('its three!'); } 我的函数返回undefined,当我知道它实际上返回3时。 这是因为javascript在函数返回值之前对if语句求值吗 如果是这样的话,我该如何做这样的事情: var result = myFunction(); // Wait until result is there if(result == "3") { alert("its three!");

当我尝试以下方法时:

if(myFunction() == "3") {
    alert('its three!');
}
我的函数返回undefined,当我知道它实际上返回3时。 这是因为javascript在函数返回值之前对if语句求值吗

如果是这样的话,我该如何做这样的事情:

var result = myFunction();

// Wait until result is there

if(result == "3") {
    alert("its three!");
}

从描述中我不太清楚你在做什么。试试这个,看看这是不是你想要的:

function MyFunction(){
    var result
    // Do something here

    //dummy:
    result = 3;
    return result;
}

var Testing = MyFunction();
alert(Testing);
if (Testing == 3) {
    alert("Holy Cow!  Its 3!");
}

从描述中我不太清楚你在做什么。试试这个,看看这是不是你想要的:

function MyFunction(){
    var result
    // Do something here

    //dummy:
    result = 3;
    return result;
}

var Testing = MyFunction();
alert(Testing);
if (Testing == 3) {
    alert("Holy Cow!  Its 3!");
}

要解决问题,请尝试以函数的返回值作为参数调用alert函数:

var result = myFunction();

// For debugging
alert(result);

if(result == "3") {
    alert("its three!");
}
function myFunction(callback) {
    // Start an AJAX request        
    var x = new XMLHttpRequest();
    x.open('GET', '/domath.php?expression=10-7', true);
    x.onreadystatechange = function() {
        if(x.readyState == 4 && x.status == 200) {
            // Call callback function, "returning" a value asynchronously
            callback(x.responseText);
        }
    };
    x.send();
}
如果警报框的内容未定义,则函数实际上不会返回值,仅将不存在的结果分配给变量也没有帮助。检查以确保myFunction如下所示:

function myFunction() {
    // Perform calculations
    var n = 10 - 7;

    // Return result    
    return n;
}
JavaScript解释器既不需要返回值的函数,也不需要使用返回语句。这意味着您应该仔细检查是否存在返回语句。如果首先将结果赋给变量,则可能会错过返回语句

如果您处理的是Ajax请求、jQuery模式对话框或类似的构造,那么当单击按钮或请求完成时,函数甚至不可能以这种方式返回值。要解决此问题,函数需要接受回调函数作为参数。完成后,它必须调用该函数,并将返回值作为参数传递:

var result = myFunction();

// For debugging
alert(result);

if(result == "3") {
    alert("its three!");
}
function myFunction(callback) {
    // Start an AJAX request        
    var x = new XMLHttpRequest();
    x.open('GET', '/domath.php?expression=10-7', true);
    x.onreadystatechange = function() {
        if(x.readyState == 4 && x.status == 200) {
            // Call callback function, "returning" a value asynchronously
            callback(x.responseText);
        }
    };
    x.send();
}
然后你的主要代码是:

myFunction(function(result) {
    // For debugging
    alert(result);

    if(result == "3") {
        alert("its three!");
    }
});

要解决问题,请尝试以函数的返回值作为参数调用alert函数:

var result = myFunction();

// For debugging
alert(result);

if(result == "3") {
    alert("its three!");
}
function myFunction(callback) {
    // Start an AJAX request        
    var x = new XMLHttpRequest();
    x.open('GET', '/domath.php?expression=10-7', true);
    x.onreadystatechange = function() {
        if(x.readyState == 4 && x.status == 200) {
            // Call callback function, "returning" a value asynchronously
            callback(x.responseText);
        }
    };
    x.send();
}
如果警报框的内容未定义,则函数实际上不会返回值,仅将不存在的结果分配给变量也没有帮助。检查以确保myFunction如下所示:

function myFunction() {
    // Perform calculations
    var n = 10 - 7;

    // Return result    
    return n;
}
JavaScript解释器既不需要返回值的函数,也不需要使用返回语句。这意味着您应该仔细检查是否存在返回语句。如果首先将结果赋给变量,则可能会错过返回语句

如果您处理的是Ajax请求、jQuery模式对话框或类似的构造,那么当单击按钮或请求完成时,函数甚至不可能以这种方式返回值。要解决此问题,函数需要接受回调函数作为参数。完成后,它必须调用该函数,并将返回值作为参数传递:

var result = myFunction();

// For debugging
alert(result);

if(result == "3") {
    alert("its three!");
}
function myFunction(callback) {
    // Start an AJAX request        
    var x = new XMLHttpRequest();
    x.open('GET', '/domath.php?expression=10-7', true);
    x.onreadystatechange = function() {
        if(x.readyState == 4 && x.status == 200) {
            // Call callback function, "returning" a value asynchronously
            callback(x.responseText);
        }
    };
    x.send();
}
然后你的主要代码是:

myFunction(function(result) {
    // For debugging
    alert(result);

    if(result == "3") {
        alert("its three!");
    }
});

这听起来像是javascript代码在函数或它访问的元素(即DOM中的某些东西)完全加载之前调用函数,这就是函数调用返回未定义而不是“3”的原因

防止这种情况的方法是延迟调用函数,直到DOM完成加载

这通常是通过在document.onload方法中调用函数来实现的,该方法仅在页面加载完成时运行,或者通过使用jQuery的$.ready方法来实现,该方法再次等待页面准备就绪后再运行


希望这会有所帮助。

这听起来像是javascript代码在函数或它访问的元素(即DOM中的某些内容)完全加载之前调用函数,这就是函数调用返回未定义而不是“3”的原因

防止这种情况的方法是延迟调用函数,直到DOM完成加载

这通常是通过在document.onload方法中调用函数来实现的,该方法仅在页面加载完成时运行,或者通过使用jQuery的$.ready方法来实现,该方法再次等待页面准备就绪后再运行


希望有帮助。

myFunction做什么?你能发布函数的内容吗?myFunction中有什么?它工作正常。问题在于你的功能。看看这个提琴来证明:等待结果出现的注释让我觉得有异步的事情发生了。。。谁知道呢…Readin@CMS comment让我觉得您可能是从myFunc中定义的匿名函数返回的。这可能和你想的不一样。myFunction做什么?你能发布函数的内容吗?myFunction中有什么?它工作正常。问题在于你的功能。看看这个提琴来证明:等待结果出现的注释让我觉得有异步的事情发生了。。。谁知道呢…Readin@CMS comment让我觉得您可能是从myFunc中定义的匿名函数返回的。这可能和你想的不一样。