Javascript在执行下一行之前不等待STRIPE.COM功能完成

时间:2014-08-21 00:23:19

标签: javascript jquery stripe-payments

stripe.com是一个支付处理网站,如paypal.com。他们分两步执行信用卡。第一步验证卡信息,第二步将金额和信用额扣除到商家帐户。 但是,对我而言,我需要使用stripe.com验证信用卡信息。所以我做的是,调用一个函数" stripeResponseHandler"它将CC信息传递给条带并在几秒钟内得到响应。它很棒。但问题是,javascript / jquery不会等到函数执行完成。事实上,我已经设置了一个变量来确定基于stripeResponseHandler响应的下一步。 是否有任何方法可以阻止进一步执行,直到stripeResponseHandler函数完成?这里有几行代码:

var cc_validate=1;
function stripeResponseHandler(status, response) {  //alert('stripeResponseHandler called');
    if (response.error) {
        cc_validate=1;
    } else {  //CC info Correct. Now Charge using PHP by Submit this form
        cc_validate=0;
        alert('CC Validation passed in stripeResponseHandler call.');
    }
}
$('#btnSubmit').on('click', function(e) {
  e.stopPropagation();
    Stripe.createToken({
        number: '4242424242424242',
        cvc: '123',
        exp_month: '11',
        exp_year: '2015'
    }, stripeResponseHandler);

  alert(cc_validate); // it always output 1(but i need 0 for valid CC)
  //'execution always comes here before complete stripeResponseHandler function execution'

1 个答案:

答案 0 :(得分:0)

createToken正在进行异步验证,因为大多数函数都会进行网络调用。 将处理移至stripeResponseHandler。

更新

无法停止并等待网络呼叫完成,然后再次开始处理而不使用回调。将您的进一步处理移动到一个函数中,并从函数stripeResponseHandler调用该函数。