2017-05-06 58 views
0

我已經寫了我的代碼,甚至不知道異步是什麼 - 這是在項目開始的時候,我是一個整體編程的新手。無法讓我的腦袋在承諾

當然,我明白他們是什麼。然而,我無法在Promises身上找到我的頭。我有一個/會話異步調用,當我打電話給它,給我一些配置文件變量,但如何完成它,我不知道。我遵循教程並迷失在其中。

有人可以指出這應該如何寫一勞永逸嗎?我將永遠感激:

var getProfileID = function(){ 
    $http.get('/session') 
     .then(function(res){ 
      return res.data.profileId; 
     }); 
}; 

getProfileID() 
.then(function(res) { 
    $scope.profileID = res; 
}); 

這看起來非常錯誤的我,但我很無能,我不知道從哪裏開始的承諾。

PS:我使用的角度1.6.4,並提前注入了$ Q

謝謝!

+1

'返回$ http.get ....'看來你的問題不在於承諾,但瞭解如何從一個函數返回一個值(在這種情況下,該值是一種承諾) –

+0

你能請稍微詳細一點?確實,我已經避免了在代碼中的任何地方返回,因爲我不需要它。 –

+1

你需要你的函數來**返回一個Promise **以便使用Promise - 因爲它代表着你的函數返回undefined,因爲沒有返回語句就等於'return undefined' - 我很驚訝你已經避免了使用返回無處不在 - 你的功能必須......有趣 –

回答

1

您應該直接從您的函數返回Promise

var getProfileID = function(){ 
    return $http.get('/session'); 
}; 

然後用它的響應使用如下:

getProfileID().then(function(res) { 
    $scope.profileID = res.data.profileId; 
}) 
+0

非常感謝!試了一下,像魅力一樣工作。 –

-1

基本上,HTTP GET調用返回一個承諾。 因此,如上面的代碼所說,返回一個http promise。

然後直接聽它解決,何時解決,更新你的變量。

var getProfileID; 

$http.get('/session').then(function(res) { 
getProfileID = res.data; 
})