[英]How to run a function only after directionsDisplay ends?
我正在回答這個問題 ,那里有一個異步請求來繪制從點A到B的路由,稱為setDirections
。 最后,我們希望端點位於中心,但默認情況下,地圖中心會顯示大部分路線。 在setDirections
之后簡單地添加setCenter(endpoint)
不會導致在端點居中。
我通過使用setTimeout進行推斷,該setDirections
似乎是另一個異步函數,因為在setDirections
片刻之后,地圖便按我的意願居中了。
那么,如何確保setCenter
僅在setDirections
完成后才能運行? 我想到了回調,但它沒有做我想要的。
在我的代碼中,我在調用function之后使用了Recurial和JavaScript Callback的模式進行了以下操作:
function wrapper (callback) {
現有的路線圖繪制代碼function wrapper (callback) {
callback(this.marker.getPosition())
wrapper
,我調用wrapper(function(latLng) { map.setCenter(latLng) })
這是一個JSFiddle。 http://jsfiddle.net/EeXQF/2/
setTimeout“解決方案”在那里,只需要取消注釋即可。
(說實話,我並沒有真正聽從您的要求,我想您的問題有很多背景,而我只是沒有。)
但是要注意的是,Javascript通常是單線程的。 一次只執行一小段代碼。
因此,您的代碼要求發生某些事情。 但是當您的代碼仍在運行時,通常不會發生這種情況。 代碼完成后,瀏覽器將執行它。 您“開始”的操作將被添加到隊列中,並在以后運行。
setTimeout,將回調添加到隊列的末尾。 這樣主要功能將完成。 地圖將有機會執行其工作(隊列中有工作),然后您的回調將觸發。
(它比實際情況要復雜,但可能有助於解釋您看到的內容)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.