我不明白函式 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 );
uj5u.com熱心網友回復:
foo 和 bar 將同時執行
JavaScript 通常在單個事件回圈上運行。除非您將處理作業交給 Worker,否則您將永遠不會同時運行兩個功能。
2- foo 然后是 bar 或 3- bar 然后是 foo,我認為 1
您還沒有向我們展示該ajax函式,但假設它進行 HTTP 回呼,然后在完整的HTTP 回應到達后將回呼函式排隊等待呼叫:
該順序將取決于服務器對兩個不同 HTTP 請求中的每一個的回應速度以及瀏覽器接收回應所需的時間。
例如,http://some.url.1 可能會導致服務器在回應之前花費 30 秒做一個真正完整的資料庫查詢,而http://some.url.2可能會做一些簡單的事情在 3 毫秒后獲得回應:在這種情況下,bar將在之前添加到佇列中foo,因此首先運行。
uj5u.com熱心網友回復:
我們無法預測函式 foo 和 bar 的順序。這些函式依賴于對api的ajax請求,所以無論哪個ajax請求先完成,它都會呼叫相應的函式。
注意:如果你需要同時同步兩個函式,那么你可以使用promise方法。
uj5u.com熱心網友回復:
您在第一次編輯時從問題中洗掉了正確答案。它是:“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
但永遠不會同時呼叫這些函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/381390.html
標籤:javascript 查询 阿贾克斯 接口
