for迴圈中Ajax 單執行緒

2022-07-14 18:09:14 字數 716 閱讀 7519

今兒除錯發現乙個有趣的小問題:網上海搜~~上**

var i;

for(i=0;i<10;i++)

在for迴圈中呼叫ajax方法  補充頁面上的資料,這樣寫是錯誤的,他不會每執行一次for迴圈就執行一次ajax方法,而是等for迴圈結束才去執行ajax方法,所以導致ajax只被執行一次。然而當修改如下:

for(i=0;i<10;i++)

與上面不同的是在每次呼叫的時候都彈出乙個窗體  alert("內容隨意")  這樣就可以在頁面正確顯示內容 而不是一條內容

原因:原因就是for迴圈在js中是單執行緒的,他會在for迴圈結束之後然後執行下一步,一步一步進行實現,而alert切斷迴圈,讓程式響應一次,從而再次呼叫ajax方法,然而在程式當中我們卻不能讓alert方法出現。

解決辦法:

var i=0;

var sum=10;

var time;

ajaxservise(i)

i=i+1;

time = settimeout(ajaxservise(),10);

……………………

………………

…………

……}

這裡用settimeout(ajax())方法進行呼叫,settimeout會當此方法執行完畢然後再次執行ajax()方法,用settimeout與cleartimeout配合完美解決此問題。

settimeout是偽多執行緒。

php 單執行緒

php 從設計之初到流行起來都沒有出現明顯需要用多執行緒才能解決的需求。某些需要用到多執行緒的地方也有相應的解決方案和替代方案。多執行緒並不總是比單執行緒優,多執行緒可能會引入其他問題 例如 兩個執行緒同時呼叫乙個類裡的同乙個方法時,可能出現死鎖的情況 每個 php 檔案的執行是單執行緒的,但是,伺...

Redis單執行緒

redis 的單執行緒主要是指 redis 的網路 io 和鍵值對讀寫是由乙個執行緒來完成的,這也是 redis 對外提供鍵值儲存服務的主要流程。當多個客戶端發起命令,這些命令併發執行時,在redis內部,會排隊逐個執行,也就是執行命令的那個操作是由乙個執行緒執行的。但 redis 的其他功能,比如...

單執行緒時代

了解了 reactor 模式後,你可能會有乙個疑問,這個和我們今天的主題有什麼關係呢。可能你不知道的是,redis 是基於 reactor 單執行緒模式來實現的。io多路復用程式接收到使用者的請求後,全部推送到乙個佇列裡,交給檔案分派器。對於後續的操作,和在 reactor 單執行緒實現方案裡看到的...