嵌套的AJAX具有不同的输入速度

用户名

我在求职面试中遇到了这个Ajax问题:

我们有以下代码,其中onChange进行AJAX调用(对asdf服务器),还进行另一个AJAX调用(对qwer服务器),

 function onDescription(description) {
    var content = $('').text(description);
    $('#results').append(content);
}

    function onSearchResults(searchResults){
        $('#results').html('');
        $.each(searchResults, function(result){
            $.ajax({
                url: 'http://qwer.com/describe',
                dataType: 'json',
                data: result,
                success: onDescription
            });
        });
    }

    function onChange(){
        $.ajax({
            url:'http:://asdf.com/search',
            dataType: 'json',
            data: $('#search').val(),
            success: onSearchResults
        });
    }

$('#search').keydown(onChange);

问题是:如果用户以不同的速度输入文本会发生什么。

1- asdf服务器将超负荷2-当用户非常快速地输入文本时,不会显示来自qwer的描述3-将显示预览搜索的结果而不是当前的文本4-将来自qwer的当前搜索查询的描述为在对asdf的请求之前显示

对我来说,选择也不是很清楚。所以在您看来,如果我们有一个嵌套的AJAX调用和不同的输入速度,将会发生什么?

Frambot

以上都不是。AJAX的目的不是确定性的。如果用户开始键入“ moon”,则四个请求将发送到asdf:“ m”,“ mo”,“ moo”和“ moon”。但是结果返回的顺序是不确定的。服务器可能会花费不同的时间来响应每个请求。您可以按照“ moo”,“ m”,“ moon”,“ mo”的顺序获得响应。随着打字速度的变化,结果可能会发生变化,但这取决于

安全的做法是忽略先前查询的结果。快速解决方法:

function onDescription(description) {
    var content = $('').text(description);
    $('#results').append(content);
}

var searchResultQuery = '';
function onSearchResults(query){
    searchResultQuery = query;
    return (function(query) {
        return function(searchResults) {
            if (query != searchResultQuery) {
                return;
            }
            $('#results').html('');
            $.each(searchResults, function(result){
                $.ajax({
                    url: 'http://qwer.com/describe',
                    dataType: 'json',
                    data: result,
                    success: onDescription
                });
            });
        };
    })(query);
}

function onChange(){
    $.ajax({
        url:'http:://asdf.com/search',
        dataType: 'json',
        data: $('#search').val(),
        success: onSearchResults($('#search').val())
    });
}

$('#search').keydown(onChange);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

嵌套的AJAX具有不同的输入速度

来自分类Dev

XCode 6.1 SWIFT的输入速度非常慢

来自分类Dev

XCode 6.1 SWIFT的输入速度非常慢

来自分类Dev

具有不同输入类型的连续嵌套扫描器,包括带空格的字符串

来自分类Dev

在TINY MCE编辑器中输入速度非常慢

来自分类Dev

具有不同迭代次数的嵌套循环

来自分类Dev

具有不同数量值的嵌套 foreach()

来自分类Dev

键盘输入源之间的葡萄牙语(巴西)布局时,Ubuntu 18.04输入速度变慢

来自分类Dev

具有不同输入的systemverilog接口数组

来自分类Dev

具有不同尺寸输入的函数的arrayfun

来自分类Dev

具有不同输入的系统Verilog界面

来自分类Dev

具有相同输入openssl的不同签名

来自分类Dev

对于具有不同输入的循环

来自分类Dev

angular2 –在单个父级组件中多次使用与嵌套组件相同的组件,并具有不同的输入

来自分类Dev

闪亮的select在浏览器中的较大数据(〜15,000个条目)上输入速度非常慢

来自分类Dev

闪亮的select在浏览器中的较大数据(〜15,000个条目)上输入速度非常慢

来自分类Dev

使div具有不同宽度和点击速度的动画

来自分类Dev

具有不同JSON响应的Ajax调用

来自分类Dev

键盘输入和不同的键具有不同的响应

来自分类Dev

AngularJs验证,所有输入必须具有不同的值

来自分类Dev

具有嵌套范围和输入的标签的悬停状态

来自分类Dev

jQuery遍历具有嵌套输入的列表项

来自分类Dev

PostgreSQL:连接具有不同元素尺寸的嵌套数组

来自分类Dev

Java 8-具有不同集合的流式嵌套ForEach

来自分类Dev

使用具有不同嵌套类型的HierarchicalDataTemplate

来自分类Dev

打印具有不同长度的数组的嵌套循环

来自分类Dev

动态url_for具有不同数量的嵌套

来自分类Dev

根据具有不同键的嵌套对象的值创建联合

来自分类Dev

具有不同且相关步骤的嵌套循环

Related 相关文章

  1. 1

    嵌套的AJAX具有不同的输入速度

  2. 2

    XCode 6.1 SWIFT的输入速度非常慢

  3. 3

    XCode 6.1 SWIFT的输入速度非常慢

  4. 4

    具有不同输入类型的连续嵌套扫描器,包括带空格的字符串

  5. 5

    在TINY MCE编辑器中输入速度非常慢

  6. 6

    具有不同迭代次数的嵌套循环

  7. 7

    具有不同数量值的嵌套 foreach()

  8. 8

    键盘输入源之间的葡萄牙语(巴西)布局时,Ubuntu 18.04输入速度变慢

  9. 9

    具有不同输入的systemverilog接口数组

  10. 10

    具有不同尺寸输入的函数的arrayfun

  11. 11

    具有不同输入的系统Verilog界面

  12. 12

    具有相同输入openssl的不同签名

  13. 13

    对于具有不同输入的循环

  14. 14

    angular2 –在单个父级组件中多次使用与嵌套组件相同的组件,并具有不同的输入

  15. 15

    闪亮的select在浏览器中的较大数据(〜15,000个条目)上输入速度非常慢

  16. 16

    闪亮的select在浏览器中的较大数据(〜15,000个条目)上输入速度非常慢

  17. 17

    使div具有不同宽度和点击速度的动画

  18. 18

    具有不同JSON响应的Ajax调用

  19. 19

    键盘输入和不同的键具有不同的响应

  20. 20

    AngularJs验证,所有输入必须具有不同的值

  21. 21

    具有嵌套范围和输入的标签的悬停状态

  22. 22

    jQuery遍历具有嵌套输入的列表项

  23. 23

    PostgreSQL:连接具有不同元素尺寸的嵌套数组

  24. 24

    Java 8-具有不同集合的流式嵌套ForEach

  25. 25

    使用具有不同嵌套类型的HierarchicalDataTemplate

  26. 26

    打印具有不同长度的数组的嵌套循环

  27. 27

    动态url_for具有不同数量的嵌套

  28. 28

    根据具有不同键的嵌套对象的值创建联合

  29. 29

    具有不同且相关步骤的嵌套循环

热门标签

归档