簡體   English   中英

如何僅在directionsDisplay結束后運行功能?

[英]How to run a function only after directionsDisplay ends?

我正在回答這個問題 ,那里有一個異步請求來繪制從點A到B的路由,稱為setDirections 最后,我們希望端點位於中心,但默認情況下,地圖中心會顯示大部分路線。 setDirections之后簡單地添加setCenter(endpoint)不會導致在端點居中。

我通過使用setTimeout進行推斷,該setDirections似乎是另一個異步函數,因為在setDirections片刻之后,地圖便按我的意願居中了。

那么,如何確保setCenter僅在setDirections完成后才能運行? 我想到了回調,但它沒有做我想要的。

在我的代碼中,我在調用function之后使用了RecurialJavaScript Callback的模式進行了以下操作:

  1. 使用function wrapper (callback) {現有的路線圖繪制代碼function wrapper (callback) {
  2. 方向請求和繪制是異步的,因此在成功的響應塊內,我調用callback(this.marker.getPosition())
  3. 定義wrapper ,我調用wrapper(function(latLng) { map.setCenter(latLng) })

這是一個JSFiddle。 http://jsfiddle.net/EeXQF/2/

setTimeout“解決方案”在那里,只需要取消注釋即可。

(說實話,我並沒有真正聽從您的要求,我想您的問題有很多背景,而我只是沒有。)

但是要注意的是,Javascript通常是單線程的。 一次只執行一小段代碼。

因此,您的代碼要求發生某些事情。 但是當您的代碼仍在運行時,通常不會發生這種情況。 代碼完成后,瀏覽器將執行它。 您“開始”的操作將被添加到隊列中,並在以后運行。

setTimeout,將回調添加到隊列的末尾。 這樣主要功能將完成。 地圖將有機會執行其工作(隊列中有工作),然后您的回調將觸發。

(它比實際情況要復雜,但可能有助於解釋您看到的內容)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM