我想等到我的流程完成后再返回我的語(yǔ)音回復(fù),否則它似乎切斷了我的流程,因此,沒(méi)有完成它,我實(shí)際上相信它可能會(huì)凍結(jié)流程,但這不是我的愿望。我該如何等待?@Overridepublic SpeechletResponse onIntent(SpeechletRequestEnvelope<IntentRequest> requestEnvelope) { IntentRequest request = requestEnvelope.getRequest(); Intent intent = request.getIntent(); String intentName = (intent != null) ? intent.getName() : null; if (intentName == null) return null; switch (intentName) { case IntentTitle.NEW_TICKET: switch (request.getDialogState()) { case STARTED: return Response.getDialogueResponse(intent, true); case IN_PROGRESS: return Response.getDialogueResponse(intent, false); case COMPLETED: String numberString = intent.getSlot(SlotTitle.ID).getValue(); if (!NumberUtils.isCreatable(numberString)) return Response.ERROR; Member member = Info.GUILD.getMemberById(numberString); User sender = UserDB.getUser(member); CommissionTicket commissionTicket = new CommissionTicket(sender); commissionTicket.create(); //wait until processes finish before continuing return Response.NEW_TICKED_CREATED; } } return null;}
1 回答

四季花海
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
我不確定內(nèi)部發(fā)生了什么commissionTicket.create();(我假設(shè)這是您的代碼,而不是某個(gè)庫(kù)的一部分,并且它以某種方式異步運(yùn)行),但一種解決方案是讓該方法返回一個(gè)Future<>對(duì)象,然后等待它完成。類(lèi)似的東西:
Future<CommissionTicket> commissionTicketFuture = CommissionTicket.create(sender);
commissionTicketFuture.get(SOME_TIMEOUT, TimeUnit.MILLIS);
return Response.NEW_TICKET_CREATED;
添加回答
舉報(bào)
0/150
提交
取消