今天,我遇到了一个奇怪的问题,在此功能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
的结果和后面的函数之间是否存在任何联系,但它们并不依赖彼此的值有关,并且在等待第一个函数结束之前触发第二个函数时,第一个函数根本不会触发。
可能是什么情况?
答案 0 :(得分:0)
在我看来,它是异步的。在Promise解决之后,将调用.then()。
您应该在异步函数中使用以下代码:
await actions.order.capture();
this.props.handlePaymentComplete(data.orderID);
确保它处于异步功能中。如果没有,该函数将被调用,但程序不会停止等待答案……因此它将执行您编写的所有内容,然后关闭进程,您将永远无法获得答案。 “ await”使程序等待答案,但是它必须在这样的异步函数中:
async function () {
await .....
}