我在面试时遇到了这个 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 调用和不同的输入速度会发生什么?