Google ウォレットの使用を開始しようとしており、ajax リクエストを介して jwt トークンを生成しています。
ユーザーが購入ボタンを押すと、 purchase() 関数が起動され、 get_jwt_token_for_user() 関数を使用して jwt を取得するためのデータが送信されます。jwtがGoogle Paymentsハンドラに確実に送信されるように、ajaxリクエストを非同期にしないように設定しました。
ただし、get_jwt_token_for_user() 関数によって jwt が返される前に、 purchase() 関数が継続しているようです。ログ出力は、jwt が get_jwt_token_for_user() 関数からコンソールに出力される前に、番号 1 と 2 がコンソールに出力されることを示しています。
function get_jwt_token_for_user(the_key)
{
var JwtTokenURL = "/get_jwt_token";
var the_user_name = $('#user_name').val();
var the_user_email = $('#user_email').val();
var the_user_number = $('#user_number').val();
$.ajax({
type: "Get",
url: JwtTokenURL,
data: {user_number : the_user_number, user_name : the_user_name, user_email : the_user_email, the_d_key : the_key},
async: false,
success: function(result) {
var myObject = JSON.parse(result);
console.log(myObject.jwt_token);
return myObject.jwt_token
},
failure: function(fail){ alert(fail); }
});
}
function purchase(the_key)
{
console.log("1");
var jwt_token = get_jwt_token_for_user(the_key);
console.log("2");
if (jwt_token !== "")
{
console.log(jwt_token);
goog.payments.inapp.buy({
parameters: {},
'jwt' : jwt_token,
'success' : successHandler,
'failure' : failureHandler
});
}
}
purchase() 関数が jwt 値なしで行進する前に、ajax リクエストがデータを返すようにするために何ができるか考えていますか?