2014-02-07 114 views
0

所以我認爲這個解決方案可以工作,但只是想看看是否有更優雅的東西。所以我想讓用戶「登記」到一個位置,一旦他們這樣做了,我想看看他們是否留在那個位置。我會每5分鐘檢查一次。一旦他們檢查出來,然後我可以停止檢查。目標是獲得在商店中花費的總時間。我正在使用JavaScript SDK for Parse。這是我解決方案的基本問題,而不是一個完整的解決方案。使用while循環來檢查用戶的位置,並且只要他們保持登錄狀態,就可以繼續這樣做。感謝您的任何建議和幫助! (另外我正在使用Google Maps API來獲取商店位置)。只是爲了確定我在問我的方法是否正確,而不是我的代碼是否正確。每5分鐘檢查一次用戶位置javascript

checkIn: function(){ 

store_location = "something predefined"; 
Parse.GeoPoint.current({ 
    success: function(point){ 

     var user_location = new google.maps.LatLng(point.latitude,point.longitude); 
     if(user_location = store_location){ 
      this.checkedIn(); 
     }, 
    } 

}); 
}, 
checkedIn: function(){ 
///run loop while the user is still checked in 
///increment total time by 5 min every time loop is called 

var checked_in = true; 
total_time = 0; 

while(checked_in){ 
    setTimeout(function(){ 
     var user_location = new  google.maps.LatLng(point.latitude,point.longitude); 
     if(user_location = store_location){ 
      total_time=total_time + 5 
     }else{ 
      checked_in = false; 
     } 
    }, 3000000) 
} 

}

+1

while循環根本不工作。它只會在while循環中旋轉,創建'setTimeout()'定時器,直到系統耗盡資源。永遠不會有超時運行。這只是根本不是你可以用JavaScript編程的方式。您必須設置一個計時器,然後當該計時器觸發時,您決定是否要繼續並設置另一個計時器。 – jfriend00

回答

0
window.setInterval(function(){ 
     var user_location = new  google.maps.LatLng(point.latitude,point.longitude); 
     if(user_location = store_location){ 
      total_time=total_time + 5 
     }else{ 
      checked_in = false; 
     } 
    },3000000); 
+0

哦,你好得多。謝謝!我是一個java腳本noob – David

+1

你的意思是隻使用'setInterval',並且需要刪除'setTimeout'? – Phrogz

+0

我相信你的權利Phrogz,但他可能剛剛被我如何寫它的困惑。的setInterval(函數(){doSomething的()},3000);是否正確執行 – David

0

而是採用了一會兒,setTimeout的,你爲什麼不使用的setInterval?我認爲這是更容易和簡化代碼

+0

是的,你的權利。我只是不知道setInterval。新的javascript – David