2017-04-11 19 views
1

我正在嘗試的是每五秒聯繫WooCommerce以檢查產品是否已被編輯。我可以通過詢問res [0] .date_modified來做到這一點。然後我比較它創建的時間(res[0].date_created)和上次修改的時間。根據if-statments結果更改if-statment參數中變量的值

如果值相同,產品從未被修改過。但是,如果產品被修改,我不再想比較產品創建和上次修改的時間。

我現在想比較上次修改時間與「res[0].date_modified」的時間,以便我可以看到它是否會在另一次修改。

這是我想出了:

function lookForEdit(){ 

WooCommerce.get('products/', function(err, WooData, res) { 
    res=JSON.parse(res) 

    var comp = res[0].date_created; 

    if(comp == res[0].date_modified){ 
     console.log("the product haven't been modified") 
    } 
    else{ 
     console.log("The product have been edited") 
     comp = res[0].date_modified; 
    } 
}) 
} 

setInterval(lookForEdit, 5000); 

我明白爲什麼它不工作,但我不知道如何解決它。

我該如何解決?

感謝

+0

客戶如何知道這些信息? – epascarello

+0

@epascarello:它輪詢信息。所以它可以存儲狀態。 –

回答

0

使用一個全局變量來存儲最後一個值就足夠了,只要檢查它是否被首先定義,如果不取date_create的值。

當然,只有在未修改未修改的項目時纔可以檢查date_modifed

在這種情況下,您只需檢查是否定義了date_modifed值,如果是,則與comp(仍爲全局)進行比較。那麼如果有不同的商店新的價值。

PS:對不起,我不能寫代碼,因爲我沒有在遺囑中寫javascript。我結束了這個問題錯^^

因爲你的代碼運行每5秒,我想你可以檢查最後一次修改發生不到5秒鐘這將是它

global comp; 

function(){ 
    if(comp not defined) 
     comp = date_created 

    if(comp != date_modified) 
     //changed 
     comp = date_modified; 
} 
+0

謝謝!這正是我需要的! – WilliamG

0

好了,馬上蝙蝠,你要設置comp = res[0].date_created,然後,如果他們是平等的,你要設置comp = res[0].date_modified但隨後的第二天調用API時,您正在使用創建日期覆蓋comp再次。你應該使用2個獨立的變量來跟蹤信息。對於要監視的值,您應該使用兩個單獨的更多描述性名稱。

+0

是的我每次調用函數時都會用原來的時間寫新值。但是我怎樣才能用If-statment中的另一個替換一個變量呢? – WilliamG

+0

我想我沒有遵循你的意思,「用if語句中的另一個替換變量」。 comp在本地被定義爲api調用,所以一旦api調用被解析,它就會自動被銷燬。如果你想在API調用之外做一些事情,那麼你應該使用一個全局變量來跟蹤結果。 –

0

僞碼前:

if(comp == res[0].date_modified){ 
    console.log("the product hasn't been modified") 
} 
else if (new Date(Date.now().getTime() - 5000) < res[0].date_modified) { 
    console.log("the product hasn't been modified since the last check"); 
} 
else{ 
    console.log("The product has been edited") 
    comp = res[0].date_modified; 
}