如果我正确理解jquery和javqascript,它是异步的。我不明白的是,如果它只是异步的ajax部分,加载和获取......或一般的一切。
例如,如果我需要在表单中附加一个列表菜单并具有:
$('#id').append("<option value='1'>1</option>") - etc., in this demo the <select id="category> is missing
现在我想要:
$('#category option[value="1"]').attr('selected', 'selected');
当然,我希望在附加菜单之后选择值 1,而不是之前,因为它不存在。
我想知道脚本是否等待追加完成,并且逐行写入两行是很容易的,或者是否需要在第一行上放置一些回调函数,以便在追加完成后执行第二行?
它可以在我的浏览器上运行,但我有一台速度很快的计算机,我担心如果它是异步的,它会在附加选择之前尝试选择一些速度较慢的计算机。
或者只是ajax调用异步?这是显而易见的事情,也是初学者喜欢的事情,但是我找不到好的关键字来查明这个基本的事情,所以我在这里问。
最佳答案
只有 AJAX、setTimeout、setInterval 和事件处理程序是异步的。其他一切都同步运行。
因此,您可以放心地假设当第二行执行时,第一行已经执行。
确定某人是否异步执行的一个好方法是检查您是否传递回调函数。如果您这样做并且执行时间取决于外部因素(网络速度)或者需要一些时间来执行(例如淡入淡出元素),那么它很可能是异步执行的。然而,像 $.each
这样的东西即使与回调函数一起工作,也会同步运行。但在这种情况下,执行速度不会被人为减慢或取决于外部因素,因此没有理由异步。
关于jquery - 等待函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693366/