2016-12-14 5 views
-1

とundefinedを返しますなぜ機能してい約束ログデータを行いますが、同じデータ

getCoordinates: function() { 
     geoLocation.getCurrentLocation().then(function(location) { 
      console.log("latitude: " + location.latitude + " longitude:" + location.longitude); 
     }); 
    } 

をし、同じ機能を実行して私が取得します:

"緯度:4X.XXXXXX経度:-12X.XXXXXXX" それは戻っている理由を私は理解していない

データを定義する必要がある場合、またはコンソールにログを記録しない場合は未定義です。これはある種のタイミング問題ですか?私は何が欠けていますか?

+0

データまたはデータの約束を返すと思いますか? – Bergi

答えて

4

は、あなただけのreturnない(実際にはそれゆえではないreturn何も、undefinedを行う)getCoordinates機能から、thenコールバックからINGのです。

This is unsolvable for asynchronous callbacksが一般的です。あなたの場合、最良の解決策は、あなたがすでに作成している将来の期待値を満たす約束を単純に返すことです。

getCoordinates: function() { 
    return geoLocation.getCurrentLocation().then(function(location) { 
// ^^^^^^ 
     return "latitude: " + location.latitude + " longitude:" + location.longitude; 
    }); 
} 
+0

上記のソリューションを試しました。私がそれをすると、約束オブジェクト自体が返されます:[オブジェクト約束] – HelloWorld

+0

はい、それは予想されます。まだ存在しないため、データを返すことはできません。リンクされた質問をお読みください。 – Bergi

+1

'console.log(getCoordinates())'を実行する代わりに、 'getCoordinates()。then(console.log)'を実行し、すぐにログを取得しないようにする必要があります。 – Bergi

関連する問題