【发布时间】:2017-01-14 12:14:49
【问题描述】:
我从本网站上的一些答案中了解了 async 函数的行为。但我还是很困惑。我尝试了 2 个 jQuery 语句,其中 STMT1 与 ajax 调用“合作”,而 STMT2 则没有。我的意思是ajax 语句无法获取所需的数据。
为什么会这样? STMT1 的执行速度是否比 STMT2 快一点?
编辑:就行为而言,我的意思是async 语句一起执行,它们是非阻塞的。所以我的两个陈述都不应该起作用?但其中之一仍在工作。为什么会这样?
$(document).ready(function(){
var foo='types: ';
$("button").click(function(){
//STMT1
// $("p").each(function(){
// foo=foo+$(this).text();
// });
//STMT2
$("p").hide(function(){
foo="YOLO";
});
$.ajax({
url: 'api.php',
type: 'post',
data: 'name='+foo,
success: function(result){
console.log(result);
},
error: function(){
console.log("Couldn't make request");
}
});
});
});
【问题讨论】:
-
不清楚你在问什么。你看到了什么行为?相反,您期望什么行为?
-
我编辑了细节。
-
目前还不清楚。什么是您不希望工作的“工作”?什么不起作用(显然是您所期望的)?
-
我的意思是
ajax语句正在获取foo的值,我认为这不应该,因为所有 3 条语句都是异步执行的,因为它们是异步的? STMT1 的执行速度足够快以使 ajax 获得价值是不是巧合? -
当连接速度慢或出现其他问题时,我是否有可能无法从 STMT1 获得价值,因为
ajax不会等待它?
标签: javascript jquery ajax