การเรียก API หลายครั้งจะส่งผลให้เกิดการดำเนินการที่ใช้เวลานาน การดำเนินการเหล่านี้จะติดตามสถานะของงานที่ดําเนินการในช่วงระยะเวลาที่นานกว่า อย่างเช่นการมี RPC ที่บล็อกไม่เป็นที่ต้องการ
คลาสการดำเนินการในอนาคต
วิธีที่ชัดเจนที่สุดในการโต้ตอบกับ LRO คือการใช้คลาส OperationFuture
หากคุณใช้โปรแกรมนี้ โปรดตรวจสอบว่าไคลเอ็นต์บริการไม่ถูกทำลายแล้ว
ไม่แนะนำ
private void doSomething() {
OperationFuture<Empty, Empty> future = startLongRunningOperation(jobName);
future.get();
}
private OperationFuture<Empty, Empty> startLongRunningOperation(String jobToStart)
throws UnsupportedEncodingException {
try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient =
googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) {
// Issues an asynchronous request to run the offline user data job for executing
// all added operations.
return offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);
}
}
แนะนำ
private void doSomethingElse() {
try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient =
googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) {
OperationFuture<Empty, Empty> future = startLongRunningOperation(offlineUserDataJobServiceClient, jobName);
future.get();
}
}
private OperationFuture<Empty, Empty> startLongRunningOperation(String jobToStart)
throws UnsupportedEncodingException {
offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);
}
สังเกตวิธีที่ระบบใช้คลาส OperationFuture
ในขณะที่ OfflineUserDataJobServiceClient
อยู่ในขอบเขตเท่านั้น