如何解决在不使用异步等待的情况下等待 API 调用调用完成后需要维护一个用户发起的执行上下文
我被严重困在这里,我正在设置 ApplePay,它需要用户发起的事件来创建 AppleSession,但我需要在此之前进行一系列 API 调用,不幸的是,由于业务规则,它们只能发生一旦用户点击结帐。
所以流程是调用 checkout 方法,在该方法中,我们在调用 process 操作时执行 await,然后如果它成功,我们将初始化 ApplePay。看起来像这样。
checkout( event ) {
await this.processpayments();
this.checkoutAP();
}
这失败了,来自 ApplePay 的一个错误,它需要一个用户启动的事件来创建一个 ApplePaySession。 await 返回一个 promise 并将其后的任何代码包装在它的 .then 中。因此,对 checkoutAP 的调用在其堆栈/上下文中不再有用户发起的事件。所以它失败了。
我尝试使用 setInterval 并检查状态值,一旦进程调用完成,它将被更新。代码不会等待 setInterval ,除非您将其包装在 Promise 中,这让我又回到了同样的问题。
这是我目前无法使用的乱七八糟的东西。
await this.processAmenityPayments(this.getPaymentList()).then(( result ) => {
this.paymentsProcessstatus = PAYMENTS_PROCESS_STATUS_COMPLETE;
},( error ) => {
this.paymentsProcessstatus = PAYMENTS_PROCESS_STATUS_ERROR;
this.errors.push(error);
});
let intervalCount = 0;
const interval = setInterval(()=> {
if( this.paymentsProcessstatus === PAYMENTS_PROCESS_STATUS_COMPLETE || this.paymentsProcessstatus === PAYMENTS_PROCESS_STATUS_ERROR) {
clearInterval(interval);
// I can't put it here,it's a different context and fails.
}
intervalCount++;
if( intervalCount > 20 ) {
clearInterval(interval);
return null;
}
},1000 );
// my hope is i can wait for the mess to run above,once the state has been updated then
// allow the code to continue at this point.
this.continueCheckout();
任何想法,无论多么笨拙都会受到欢迎。
谢谢各位!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。