函数 foo 和 bar 的执行顺序是什么?
what is order will the functions foo and bar be executed?
我不明白 foo 和 bar 函数的执行顺序是什么?
1- foo 和 bar 将同时执行,或者 2- foo 然后 bar 或 3- bar 然后 foo,我认为 1- 但我不确定
var res = {};
function foo(results) {
res.foo = results;
}
function bar(results) {
res.bar = results;
}
// ajax (..) is some arbitrary function given by a library
ajax( "http://some.url.1", foo );
ajax( "http://some.url.2", bar );
您在第一次编辑时从问题中删除了正确答案。它是:“2- 我们不知道”
不了解 ajax
的实现(或文档)就无法知道顺序。顺序甚至可以在不同的 运行 之间改变。
这是一个例子:
function ajax(url, fn) {
setTimeout(fn, Math.random() * 1000);
}
var res = {};
function foo(results) {
res.foo = results;
console.log('foo');
}
function bar(results) {
res.bar = results;
console.log('bar');
}
// ajax (..) is some arbitrary function given by a library
ajax( "http://some.url.1", foo );
ajax( "http://some.url.2", bar );
您可以 运行 多次,顺序会改变。有时是
foo
bar
有时是
bar
foo
但函数永远不会同时被调用。
foo and bar will execute in the same time
JavaScript 通常在单个事件循环上运行。除非您将处理工作外包给 Worker,否则您 永远不会 同时拥有两个功能 运行ning。
2- foo then bar or 3- bar then foo, I think 1
您没有向我们展示 ajax
函数,但是 假设 它进行 HTTP 回调,然后将回调函数排队等待 完成 HTTP 响应已到达:
顺序将取决于服务器对两个不同 HTTP 请求的响应速度以及浏览器接收响应所需的时间。
例如,http://some.url.1
可能 导致服务器在响应之前花费 30 秒进行真正完整的数据库查询,而 http://some.url.2
可能会做一些简单的事情在 3 毫秒后得到响应:在这种情况下,bar
将在 foo
之前添加到队列中,因此首先是 运行。
我们无法预测函数 foo 和 bar 的顺序。这些函数依赖于 ajax 对 api 的请求,因此无论哪个 ajax 请求先完成,它都会调用相应的函数。
注意:如果您需要同时同步这两个函数,那么您可以使用 promise 方法。
我不明白 foo 和 bar 函数的执行顺序是什么?
1- foo 和 bar 将同时执行,或者 2- foo 然后 bar 或 3- bar 然后 foo,我认为 1- 但我不确定
var res = {};
function foo(results) {
res.foo = results;
}
function bar(results) {
res.bar = results;
}
// ajax (..) is some arbitrary function given by a library
ajax( "http://some.url.1", foo );
ajax( "http://some.url.2", bar );
您在第一次编辑时从问题中删除了正确答案。它是:“2- 我们不知道”
不了解 ajax
的实现(或文档)就无法知道顺序。顺序甚至可以在不同的 运行 之间改变。
这是一个例子:
function ajax(url, fn) {
setTimeout(fn, Math.random() * 1000);
}
var res = {};
function foo(results) {
res.foo = results;
console.log('foo');
}
function bar(results) {
res.bar = results;
console.log('bar');
}
// ajax (..) is some arbitrary function given by a library
ajax( "http://some.url.1", foo );
ajax( "http://some.url.2", bar );
您可以 运行 多次,顺序会改变。有时是
foo
bar
有时是
bar
foo
但函数永远不会同时被调用。
foo and bar will execute in the same time
JavaScript 通常在单个事件循环上运行。除非您将处理工作外包给 Worker,否则您 永远不会 同时拥有两个功能 运行ning。
2- foo then bar or 3- bar then foo, I think 1
您没有向我们展示 ajax
函数,但是 假设 它进行 HTTP 回调,然后将回调函数排队等待 完成 HTTP 响应已到达:
顺序将取决于服务器对两个不同 HTTP 请求的响应速度以及浏览器接收响应所需的时间。
例如,http://some.url.1
可能 导致服务器在响应之前花费 30 秒进行真正完整的数据库查询,而 http://some.url.2
可能会做一些简单的事情在 3 毫秒后得到响应:在这种情况下,bar
将在 foo
之前添加到队列中,因此首先是 运行。
我们无法预测函数 foo 和 bar 的顺序。这些函数依赖于 ajax 对 api 的请求,因此无论哪个 ajax 请求先完成,它都会调用相应的函数。
注意:如果您需要同时同步这两个函数,那么您可以使用 promise 方法。