【问题标题】:Stripe + Parse - Can't figure out Javascript promisesStripe + Parse - 无法弄清楚 Javascript 承诺
【发布时间】:2015-02-26 03:11:57
【问题描述】:

对于知道的人来说,这将是一个简单的 javascript 答案,但我对 javascript 不是很好。

我正在使用 Stripe + Parse。在此功能中,我需要: 1.创建客户 2. 向该客户收费

我在使用 Promise 语法时遇到了问题。

只有当两个 Stripe 调用都返回成功时,我才需要 success。但是,当任何一个返回错误时,我都需要调用error。鉴于这种链式语法,我不知道将它们放在哪里。

Parse.Cloud.define("chargeToken",function(request,response)
{

    Stripe.Customers.create({

      card: request.params.card,
      description: request.params.description

    }).then(function(customer) {

      return Stripe.Charges.create({

        amount: request.params.amount,
        currency: request.params.currency,
        customer: customer.id,

        success:function(results)
            {
                response.success(results);
            },
        error:function(error)
            {
                response.error("Error:" +error); 
            }

      });
    });
});

此代码取自 Stripe 网站上的示例,但是没有我需要的示例示例,这是我想出的最好的示例。

【问题讨论】:

  • 你有什么问题?您是说要使用Stripe.Charges.create() 的结果吗?如果Stripe.Charges.create() 返回错误,则该错误将向上传递,因为您正在返回一个新的承诺。或者你是说你想要整个事情的成功/错误?
  • @Brad 问题是我得到一个错误:Error: success/error was not called 在返回Parse.Cloud 函数时。

标签: javascript parse-platform stripe-payments


【解决方案1】:

您应该能够将成功和错误处理代码编写为链中的最后一个处理程序。例如:

Stripe.Customers.create({
  card: request.params.card,
  description: request.params.description
}).then(function(customer) {
  return Stripe.Charges.create({
    amount: request.params.amount,
    currency: request.params.currency,
    customer customer.id
  });
}).done(function(results) {
  response.success(results);
}, function(err) {
  response.error('Error:' + err);
});

【讨论】:

  • 我收到一个错误:Error: success/error was not called 在此实现上返回 Parse.Cloud 函数时也是如此。这与原始代码的错误相同。
  • 我对 Parse API 不是很熟悉,但从快速搜索来看,Parse 云函数似乎很难 timeout limits 处理异步请求。也许 Stripe 调用花费的时间比 Parse 允许的时间长(此时似乎是 15 秒)?
猜你喜欢
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多