TLDR我有一個函數可以在一個openlayers地圖的平底鍋上運行。不要讓它連續發射。運行n秒後延遲運行一次。 (2分鐘的問題)
我有一個函數可以在平移地圖的末尾運行。 我需要它,直到平底鍋結束後3秒纔會開啓功能。儘管我不想排隊這個函數來像setTimeout當前所做的那樣發射10次左右的時間。
如何延遲函數運行n秒,然後只運行一次而不管它被調用了多少次?
map.events.register("moveend", map, function() {
setTimeout(SetLocation, 5000);
});
Moveend:
moveend - triggered after a drag, pan, or zoom completes
的代碼上述即使使用的setTimeout(FUNC,延遲);運行時仍會多次發射。我怎樣才能防止這一點?
目前未觸發功能。試試你上面發佈的內容。感謝你的快速回復:) /編輯:它正在發射,但是當它發射時,它一次發射約50-60次? – Sphvn 2010-05-24 03:44:44
它正在使用上面的例子仍然導致「SetLocation」函數多次觸發。 – Sphvn 2010-05-24 03:50:59
尾崎,這很奇怪......你確定你只註冊一次'moveend'事件嗎? – CMS 2010-05-24 03:53:41