2017-02-18 4 views
0

Я использую POST для отправки заданий удаленно из приложения. Запрос POST возвращает идентификатор задания, в котором я могу использовать запрос GET для проверки состояния.Подождите, пока запрос GET будет иметь определенную переменную

$http.get('http://localhost:8090/jobs/'+id).then(function successCallback(results) { 
    jobResults = results; 
} 

Только проблема заключается в том, что я хочу присвоить переменную после выполнения задания, а не сразу, когда она только началась. Есть ли способ сделать это?

Если это будет сделано, результаты выглядят следующим образом:

{ 
    "duration": "0.171 secs", 
    "classPath": "spark.jobserver.WordCountExample", 
    "startTime": "2017-02-17T22:47:49.291Z", 
    "context": "c4c62dd3-spark.jobserver.WordCountExample", 
    "result": { 
    "word1": 1, 
    "word2": 3 
    }, 
    "status": "FINISHED", 
    "jobId": "994569f9-b6a5-40d3-a4b3-f281276c6716" 
} 

Единственное отличие в стороне от сообщения о состоянии, если это не сделано, что «результат» переменная не существует.

+1

Где вы хотите использовать эту переменную? в представлении? – digit

+0

@ digit да Я надеялся обновить его на frontend – QuantumRich

+1

С помощью сервиса AngularJS $ http код должен будет опросить сервер каждую секунду или около того. – georgeawg

ответ

1

Я думаю, что ваша проблема в том, что вы пытаетесь найти решение в неположенном месте. Я вижу, что ваша работа обрабатывается в бэкэнд, поэтому вы хотите обновить ее во внешнем интерфейсе, но у вас нет информации, необходимой для этого. Таким образом, вам нужно будет обработать процесс, который проверяет статус задания для назначения переменной, когда вы хотите сделать это, в этом случае, когда задание будет завершено. Например, вы можете сделать это с помощью setInterval.

var jobs = []; 
setInterval(function() { 
    for (var i = 0; i < jobs.lenght; i++) { 
    checkJobStatus(); 
    } 
}); 
-1

Пожалуйста, попробуйте ниже получить URL.
Считайте, что вы получаете jobId из почтового запроса.

$http.get('http://localhost:8090/jobs/:id',{id : jobId}).then(function successCallback(results) { 
    jobResults = results; 
} 
Смежные вопросы