Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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 使用jQuery'执行命令;s阿贾克斯_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 使用jQuery'执行命令;s阿贾克斯

Javascript 使用jQuery'执行命令;s阿贾克斯,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有以下代码(ajax是异步的): 输出“你好”和“世界”(按该顺序)。但是如果稍微更改一下,那么console.log()的顺序就不同了: function echoHello() { return "hello"; } function echoWorld() { return $.ajax({ //this will return "world"; }); } $.when(echoWorld()).don

我有以下代码(ajax是异步的):

输出“你好”和“世界”(按该顺序)。但是如果稍微更改一下,那么
console.log()
的顺序就不同了:

function echoHello()
{
    return "hello";
}

function echoWorld()
{
    return $.ajax({
        //this will return "world";
    });
}

$.when(echoWorld()).done(function(response)
{
    console.log(response);
});

console.log(echoHello());

是否保证相同的输出?或者它可能会输出“world”然后“hello”?

Ajax调用web服务器,并且是异步的。你不知道要花多长时间。这和

setTimeout({console.log('world');},0);
log('Hello')$.ajax()返回一个实现Promise接口的对象。如果选项为false,它将发送一个同步Ajax请求,并返回一个已解决的承诺

对于参数,如果参数既不是延迟的,也不是承诺的,也不是不可更改的,则返回已解决的承诺

所以下面的示例将打印“Sync”、“Hello”、“World”、“Async”


请注意,从jQuery 1.8开始,不推荐在jqXHR中使用async:false。

保证-同步代码总是在异步代码启动之前完成。这对于理解这一切是如何工作的非常有用。这取决于注释隐藏的内容是否可以更改:但是如果您确定
echoWorld
是异步的,那么是的,这里的顺序是有保证的。
function echoHello()
{
    return "hello";
}

function echoWorld()
{
    return $.ajax({
        //this will return "world";
    });
}

$.when(echoWorld()).done(function(response)
{
    console.log(response);
});

console.log(echoHello());
jQuery(document).ready(function( $ ){
    let echoHello = () => "Hello";
    let echoAsync = () => $.ajax({url: "data:text,Async"});
    let echoSync = () => $.ajax({ async: false, url: "data:text,Sync" });

    let log = response => console.log(response);

    $.when(echoAsync()).done(log); // logs "Async"
    $.when(echoSync()).done(log); // logs "Sync"
    $.when(echoHello()).done(log); // logs "Hello"
    console.log('World'); // logs "World"
});