Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Coroutine
AWS SDK untuk Kotlin Ini asinkron secara default. SDK untuk Kotlin menggunakan suspend fungsi untuk semua operasi, yang dimaksudkan untuk dipanggil dari coroutine.
Untuk panduan lebih mendalam tentang coroutine, lihat dokumentasi resmi
Membuat permintaan bersamaan
Pembuat coroutine asyncasyncmengembalikan Deferred
Jika Anda tidak peduli dengan hasilnya (hanya bahwa operasi selesai), Anda dapat menggunakan pembuat coroutine peluncuranlaunchsecara konseptual mirip dengan. async Perbedaannya adalah peluncuran mengembalikan Jobasync mengembalikan aDeferred.
import kotlinx.coroutines.async import kotlinx.coroutines.runBlocking import kotlin.system.measureTimeMillis import aws.sdk.kotlin.services.s3.S3Client fun main(): Unit = runBlocking { val s3 = S3Client { region = "us-east-2" } val myBucket = "<your-bucket-name-here>" val key1 = "<your-object-key-here>" val key2 = "<your-second-object-key-here>" val resp1 = async { s3.headObject{ bucket = myBucket key = key1 } } val resp2 = async { s3.headObject{ bucket = myBucket key = key2 } } val elapsed = measureTimeMillis { val totalContentSize = resp1.await().contentLength + resp2.await().contentLength println("content length of $key1 + $key2 = $totalContentSize") } println("requests completed in $elapsed ms") }
Membuat permintaan pemblokiran
Untuk melakukan panggilan layanan dari kode yang ada yang tidak menggunakan coroutine dan mengimplementasikan model threading yang berbeda, Anda dapat menggunakan pembuat coroutine RunBlocking.
Seperti namanya, runBlocking pembuat ini meluncurkan coroutine baru dan memblokir utas saat ini hingga selesai.
Awas
runBlockingumumnya tidak boleh digunakan dari coroutine. Ini dirancang untuk menjembatani kode pemblokiran reguler ke perpustakaan yang ditulis dalam gaya penangguhan (seperti dalam fungsi utama dan tes).