gpt4 book ai didi

node.js - 如何 promise Braintree 方法?

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:34 24 4
gpt4 key购买 nike

我在 promise Braintree 方法时遇到了麻烦。具体来说,是 gateway.transaction.sale。 https://developers.braintreepayments.com/reference/request/transaction/sale/node

我将 node.js 与 bluebird 库一起使用来实现 promise 。

    ...
var sale = bluebird.promisify(gateway.transaction.sale);
return sale({
amount: '10.00',
paymentMethodNonce: nonce,
});
})
.then( // doesn't reach here)
.catch(// logs out error)

具体来说,promise 链底部的 .catch block 会注销:

[TypeError: this.create is not a function]

当不尝试 promise 时,代码可以正常工作。

gateway.transaction.sale({
amount: '10.00',
paymentMethodNonce: nonce,
}, function(err, result) {
... no errors, everything works fine
}

这是braintree库实现方式的问题吗?难道我 promise 错了?我可以尝试任何替代的 promise 策略来避免回调 hell 吗?

最佳答案

您缺少上下文参数,即 this。如果您使用的是 bluebird v2,请执行以下操作:

var sale = bluebird.promisify(gateway.transaction.sale, gateway.transaction);

如果您使用版本 3,请执行以下操作:

var sale = bluebird.promisify(gateway.transaction.sale, {context: gateway.transaction});

您可以在 Bluebird's docs 中看到这一点.

关于node.js - 如何 promise Braintree 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34321458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com