Моя проблема довольно проста, и я думаю, что многие программисты уже должны были столкнуться с этим. Я использую angularjs и мой Javascript выглядит следующим образом:Возможно ли, чтобы функция не возвращалась до тех пор, пока не будет выполнено условие?
controller('myController', function())
{
if(validateForm())
{
//do after-validation stuff
}
validateForm = function()
{
var val = undefined;
$http.get('api/validate/').
success(function(data){
val = true;
}).
error(function(data){
val =false;
});
while(!val)
{ // loop over till val has value
}
return val;
}
}
У меня есть два вопроса:
1) когда я делаю HTTP называть это возвращает объект обещание и решает любой успех или функции ошибки. Если это так, то цикл while в этом коде не должен быть бесконечным, но это так. По отладке я обнаружил, что если я присвою значение переменной «var», тогда будет сделан только HTTP-вызов, т. Е. Когда концы завершатся. Почему http-вызов, будучи отложенным вызовом, ждет завершения цикла while?
2) Если я удаляю цикл while, независимо от значения «var», функция возвращает. Как я могу заставить его возвращаться, только если определено «var»?
Может, пожалуйста, опишите первый немного? :) –
Привет, Калхано Торрес Памудита, сценарий сам по себе прост, я пытаюсь достичь - это вызов B и B, возвращающий значение, основанное на том, что A что-то делает или движется дальше. – sweetcode
Возможный дубликат [Как вернуть ответ от вызова Ajax?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) –