2016-05-31 59 views
-1

我嘗試使用$ http.post中的承諾響應來獲取記錄的新ID作爲整數並將其用於下一個$ http.post。我用How do I return the response from an asynchronous call?尋求幫助,但它仍然沒有工作。

var streckenId; 
var trackpunktId; 

var getStreckeID = function() { 
    $http.post(dbStrecke, {"ort": location, "distanz": km}).then(function (response) { 
    streckenId = response.data; 
    console.log("ID (then): " + streckenId); // return ID 
    }); 
    return streckenId; 
}; 

streckenId = getStreckeID(); 
console.log("StreckeID:" + streckenId); //return undefined 

最後一個console.log仍然說「streckenId」未定義。

+0

你沒有很好地閱讀這個問題的答案,你仍然在嘗試使用尚未設置的東西。 –

+0

你在開玩笑嗎?我試圖用上面的線程解決,但它不工作,所以我仍然沒有幫助?偉大的社區! – J4ck

+0

它確實有效,你只是錯誤地實現了它。 –

回答

0

修改你的代碼從該服務器等

var streckenId; 
var trackpunktId; 

var getStreckeID = function() { 
    return $http.post(dbStrecke, {"ort": location, "distanz": km}); 
}; 

getStreckeID().then(function(response) { 
    streckenId = response.data; 
    console.log("ID (then): " + streckenId); // return ID 
}); 

數據將只提供時承諾解決。 因此,分配將在解決承諾後執行。否則streckenId將爲undefined

+0

感謝您的回答,但仍然無法正常工作。從那以後的console.log給出了一個未定義的 – J4ck

+0

你檢查了什麼與響應? – Ashot

+0

是的,在.then(){}中的響應返回正確的ID – J4ck