Re: [js] javascript sleep

看板Ajax作者 ( :D)時間17年前 (2007/09/22 01:20), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串4/4 (看更多)
不太清楚 TonyQ 要的同步鎖定是什麼意思 是說目前這一個執行緒到這邊要暫停住嗎? 據我印象中好像沒有可以專門用來停住執行緒的單一函式 但是我們倒是可以留住這個執行緒目前的 context 我大概試了一下, 雖然不知道是不是你需要的功能 但參考一下也無可厚非 其中 print(s) wrap 了類似 body.innerHTML+=s 的東西 function sleep(sec) { var obj = new Object(); setTimeout(function() { obj.after(); },sec*1000); return obj; } function foo() { var bar = arguments.callee; var node = "World"; print("Hello"); sleep(2).after = function() { print(node); }; } 雖然 sleep(sec) 是用 setTimeout 在 sec 秒後呼叫之後的 anonymous function 可是 context 還是在 foo() 裡面, 只是 callee 變 這個子函式了 然後, 如果要多次呼叫 sleep 的話會變成多層巢狀函式, 比較不好看 當然這兩點都有 workaround 的方法就是了 ※ 引述《gpmm (銀色)》之銘言: : ※ 引述《TonyQ (骨頭)》之銘言: : : → TonyQ:好吧 , 它並不是那麼的好用 , 當它開啟的時候會擋到原本頁面 09/20 04:44 : : → TonyQ:的事件 , 真是遺憾 orz 09/20 04:45 : [蘇姍] : 半懂你的意思,另一半用猜想的。 : 純 Ajax timeout 我找到過一個很蠢卻很有用的方式, : request 出去給 php 做 sleep 等它回來,不過這我想不是你要的 XD : 因為 server 掛點一樣無效。 : 我猜想你需要的是避免 server 掛或網路斷時 Explore wait 過久的機制, : 小弟也做過類似的東西。 : 在 request send 出去時同時執行一個全域的 setTimeout 或 setInterval, : 然後在兩個地方解鎖,其一是循環檢查的 func 裡,另一個是 request handle 的 : 地方。 : 如果由循環檢查的 func 發現超時則將原本應該顯示回傳的地方重製成錯誤顯示訊息。 : 不知道這是不是你要的 o_oa" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.51

09/22 02:28, , 1F
我就是要找停住執行緒的處理方式 , 前面有其中之一解法,
09/22 02:28, 1F

09/22 02:28, , 2F
你這個算是非同步的方式:P
09/22 02:28, 2F
文章代碼(AID): #16y_rGjv (Ajax)
討論串 (同標題文章)
本文引述了以下文章的的內容:
2
8
完整討論串 (本文為第 4 之 4 篇):
2
4
2
8
文章代碼(AID): #16y_rGjv (Ajax)