$.each 循环中的函数调用,是异步还是同步?
Function call inside a $.each loop, is it async or sync?
因为我们不得不处理一些 async/sync 问题,所以与我的同事就此进行了辩论。然而,它提出了另一个问题,我无法找到明确的答案。
假设一个简单的 for-each 循环 ($.each),我在其中 for-each 迭代调用全局范围内的函数集。函数 运行 是同步的还是异步的?假设没有 Ajax,那么函数所做的是完全同步的,尽管只是执行了。换句话说,我想知道函数调用本身是否在迭代中阻塞。
谢谢!
是同步的。您可以判断是否在循环之后和循环内部设置断点。循环中的断点将在循环后的断点之前命中。
这是假设断点将在执行中命中,object/array 被循环遍历有项目等。
JavaScript 中的所有内容都是同步的。如果您不使用超时或回调,一切都将是 "synchronous"。
简单的例子应该可以证明这一点。
var data = [1,2,3];
var results = [];
$.each(data, function(d) { results.push(d); });
console.log(results); // [1,2,3]
它是同步的。你可以在这里查看源代码,没有涉及同步编程。
http://www.james.padolsey.com/jquery/#v=1.11.2&fn=jQuery.each
因为我们不得不处理一些 async/sync 问题,所以与我的同事就此进行了辩论。然而,它提出了另一个问题,我无法找到明确的答案。
假设一个简单的 for-each 循环 ($.each),我在其中 for-each 迭代调用全局范围内的函数集。函数 运行 是同步的还是异步的?假设没有 Ajax,那么函数所做的是完全同步的,尽管只是执行了。换句话说,我想知道函数调用本身是否在迭代中阻塞。
谢谢!
是同步的。您可以判断是否在循环之后和循环内部设置断点。循环中的断点将在循环后的断点之前命中。
这是假设断点将在执行中命中,object/array 被循环遍历有项目等。
JavaScript 中的所有内容都是同步的。如果您不使用超时或回调,一切都将是 "synchronous"。
简单的例子应该可以证明这一点。
var data = [1,2,3];
var results = [];
$.each(data, function(d) { results.push(d); });
console.log(results); // [1,2,3]
它是同步的。你可以在这里查看源代码,没有涉及同步编程。
http://www.james.padolsey.com/jquery/#v=1.11.2&fn=jQuery.each