私はCordovaのFacebookプラグインを使用してユーザー名/電子メール/ etcを取得しています(これはうまくいきます)。私は機能を作成してDBコードへの投稿をテストし、テストボタンに結びつけています。しかし、私はポスト2-dbコードをfb-loginコード内に置くと、http-postで正確に実行を停止します。私はにconsole.log(STEP1)を行うと、細かいことがわかり、私ははconsole.log(STEP2)を見ることはありません - 以下の私のコードを参照してください。Ionic2/Angular2関数内で関数を呼び出せません
// LOGIN TO FACEBOOK
doFbLogin(){
let permissions = new Array();
let nav = this.navCtrl;
//the permissions your facebook app needs from the user
permissions = ["public_profile"];
Facebook.login(permissions)
.then(function(response){
let userId = response.authResponse.userID;
let params = new Array();
//Getting name and gender properties
Facebook.api("/me?fields=name,gender,email", params)
.then(function(user) {
user.picture = "https://graph.facebook.com/" + userId + "/picture?type=large";
//now we have the users info, let's save it in the NativeStorage
NativeStorage.setItem('user',
{
name: user.name,
gender: user.gender,
picture: user.picture,
email: user.email,
})
.then(function(){
// BEGIN INSERT USER TO DB
// postRequest() {
var headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json');
let options = new RequestOptions({ headers: headers });
let postParams = {
userName: user.name,
userEmail: user.email,
userImage: user.picture,
}
console.log("STEP 1");
// IT WORKS UP TO THIS POINT
this.http.post("http://example.com/post.php", postParams, options)
.subscribe(data => {
console.log(data['_body']);
}, error => {
console.log(error);// Error getting the data
});
//}
// END DB INSERT CODE
// I NEVER SEE THIS CONSOLE LOG BELOW
console.log("STEP 2");
// User Reg complete, push them to app
nav.push(TabsPage);
}, function (error) {
console.log(error);
})
})
}, function(error){
console.log(error);
});
}
}
私はコードの塊を取り出した場合は、すべてが正常に動作します。私はコーディングの初心者であり、徹底的なレッスンレベルの説明と支援を感謝しています。ありがとうございました。
小説のように見えないように質問を絞り、無関係な行がすべて削除された非常に短いコードのようにすると、より良い回答が得られます。 – Ari