繁体   English   中英

Stripe createToken同步

[英]Stripe createToken Synchronous

目前我有以下验证码:

var validatePayment = function() {
        stripe.createToken(card).then(function(result) {
            if (result.error) {
              // Inform the customer that there was an error.
              var errorElement = document.getElementById('card-errors');
              errorElement.textContent = result.error.message;
              return false;

            } else {
              stripe_token = result.token;
              return true;

            }
          });

        return false
    }

验证付款称为:

if(validatePayment() {
//Do Something
} else {
//Don't do something
}

调用validatePayment始终为false,因为它的异步函数。 stripe.createToken(card)有没有办法。 有没有办法让它同步?

由于stripe.createToken(card)创建了一个承诺,你可以返回,然后确定结果没有条件(如目前,这是同步的),但用.then() / .catch()

var validatePayment() {
    return stripe.createToken(card).then(function(result) { //<-- note return
};

validatePayment()
    .then(() => { /* payment was OK */ })
    .catch() => { /* uh-oh... */ });

你可以尝试使用promises

    var validatePayment = function() {
                    return new Promise((resolve,reject)=>{ 
                      stripe.createToken(card).then(function(result) {
                        if (result.error) {
                          // Inform the customer that there was an error.
                      var errorElement = document.getElementById('card-errors');
                      errorElement.textContent = result.error.message;
                      return false;

                } else {
                  stripe_token = result.token;
                  return true;

                }
              });
    }).then(stats => {
            resolve(stats)
        }).catch( e =>
          reject()
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM