为什么不触发此功能?

时间:2020-07-23 14:24:45

标签: javascript node.js

今天,我遇到了一个奇怪的问题,在此功能actions.order.capture()中,它不会触发:

actions.order.capture();
this.props.handlePaymentComplete(data.orderID);

但是当我这样使用它时,它会起作用:

actions.order.capture().then(() => {this.props.handlePaymentComplete(data.orderID);})

我知道在以后的情况下它会等待actions.order.capture()结束,而且我会理解actions.order.capture的结果和后面的函数之间是否存在任何联系,但它们并不依赖彼此的值有关,并且在等待第一个函数结束之前触发第二个函数时,第一个函数根本不会触发。

可能是什么情况?

1 个答案:

答案 0 :(得分:0)

在我看来,它是异步的。在Promise解决之后,将调用.then()。

您应该在异步函数中使用以下代码:

await actions.order.capture();
this.props.handlePaymentComplete(data.orderID);

确保它处于异步功能中。如果没有,该函数将被调用,但程序不会停止等待答案……因此它将执行您编写的所有内容,然后关闭进程,您将永远无法获得答案。 “ await”使程序等待答案,但是它必须在这样的异步函数中:

async function () {
    await .....
}