2017-05-06 10 views
0

私は自分のコードを非同期でも知らずに書いています。プロミスの周りに頭を上げることはできません

もちろん、私は彼らが何であるかを理解しています。しかし、私は約束の周りに頭を上げることはできません。私はそれを呼び出すと、私にいくつかのプロファイル変数を渡すが、それをやり遂げる方法は、/セッション非同期呼び出しを持っている、私は分かりません。私はチュートリアルに続き、迷ってしまいました。

誰かがこれを何回書いておくべきかを指摘できますか?私は永遠に感謝するでしょう。

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約束を返します。

それから、直接それが解決されるのを待ち受けてください。解決したら、変数を更新してください。

var getProfileID; 

$http.get('/session').then(function(res) { 
getProfileID = res.data; 
}) 
関連する問題