2017-02-18 61 views
0

我正在使用POST從我的應用程序遠程提交作業。 POST請求返回一個作業ID,我可以使用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是我希望在前端更新它 – QuantumRich

+1

使用AngularJS $ http服務,代碼需要每隔一秒左右輪詢一次服務器。 – georgeawg

回答

1

我認爲你的問題是你正在嘗試在錯誤的地方找到解決方案。我所看到的是你的工作正在後端進行處理,所以你想在前端進行更新,但是你沒有做到這一點所需的信息。 因此,您必須提供一個檢查作業狀態的流程,以便在您想要分配變量時分配變量,在這種情況下,作業完成後。例如,你可以用setInterval來做到這一點。

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

請嘗試下面的get url。
考慮你從post請求中獲得jobId。

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