KOTLIN_ADEPT Telegram 105
Интероп suspend и async функций

Ранее все suspend-функции в Kotlin превращались в обычные функции с completionHandler на стороне Swift, но начиная с Swift 5.5 появился интероп между корутинами в обе стороны. Однако пусть это не вводит вас в заблуждение: это всего лишь "сахар" в Swift, который преобразует коллбэки в асинхронные функции ❗️

Соответственно, у вас будет работать базовый сценарий использования асинхронной функции, но на этом из хороших новостей всё:
Запуск async-функции на Main-диспетчере не гарантирует выполнения на главном потоке в Swift.
CancellationException не будет преобразовываться в CancellationError, соответственно, не будет работать кооперативная отмена корутин и есть риск получить work leak.

💡 Казалось бы, с этой проблемой может помочь библиотека SKIE, но и там не всё гладко. Она исправляет только интероп в одну сторону, когда мы вызываем suspend-функции из Swift-кода, но не в обратную.

Так что будьте осторожны с таким интеропом и следите за развитием полноценной поддержки в соответствующем issue.

#Coroutines #Kotlin #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM



tgoop.com/kotlin_adept/105
Create:
Last Update:

Интероп suspend и async функций

Ранее все suspend-функции в Kotlin превращались в обычные функции с completionHandler на стороне Swift, но начиная с Swift 5.5 появился интероп между корутинами в обе стороны. Однако пусть это не вводит вас в заблуждение: это всего лишь "сахар" в Swift, который преобразует коллбэки в асинхронные функции ❗️

Соответственно, у вас будет работать базовый сценарий использования асинхронной функции, но на этом из хороших новостей всё:
Запуск async-функции на Main-диспетчере не гарантирует выполнения на главном потоке в Swift.
CancellationException не будет преобразовываться в CancellationError, соответственно, не будет работать кооперативная отмена корутин и есть риск получить work leak.

💡 Казалось бы, с этой проблемой может помочь библиотека SKIE, но и там не всё гладко. Она исправляет только интероп в одну сторону, когда мы вызываем suspend-функции из Swift-кода, но не в обратную.

Так что будьте осторожны с таким интеропом и следите за развитием полноценной поддержки в соответствующем issue.

#Coroutines #Kotlin #Swift

BY Kotlin Adept Notes




Share with your friend now:
tgoop.com/kotlin_adept/105

View MORE
Open in Telegram


Telegram News

Date: |

A vandalised bank during the 2019 protest. File photo: May James/HKFP. Matt Hussey, editorial director of NEAR Protocol (and former editor-in-chief of Decrypt) responded to the news of the Telegram group with “#meIRL.” With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. Image: Telegram. Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators.
from us


Telegram Kotlin Adept Notes
FROM American