2016-05-31 5 views
-1

Я пытаюсь использовать обещание ответить от $ http.post, чтобы вернуть новый идентификатор записи как целого и использовать ее для следующего $ 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