Kotlin 中是否有类似于 Dart 的 Completer 行为的东西?

인수교*_*인수교 3 asynchronous dart kotlin flutter

我正在为 flutter 创建插件。并面临 Android 原生的问题。我正在使用 Android 版 Kotlin,并且希望使用 Flutter 平台通道的价值。很难用英语解释。这是一个代码。

fun Foo(): Any? { 
  methodChannel.invokeMethod(
    "method",
    null, 
    object : ErrorLogResult("tag") {
      override fun success(result: Any?) {
        super.success(result)
        // Get result.
      }
    })

  // return result from result callback after callback is done.
}
Run Code Online (Sandbox Code Playgroud)

它可以像下面的 dart 代码一样。

Future<dynamic> Foo() async {
  final completer = Completer();

  someFunctionWithCallback((result) {
    completer.complete(result);
  });

  return completer.future;
}
Run Code Online (Sandbox Code Playgroud)

Jan*_*ain 6

老问题,但也许有人会遇到这个问题,就像我一样。

是的,有类似的东西:CompletableDeferred

伪代码示例:

@Volatile
private var completableMeetingService = CompletableDeferred<MeetingService>()

// we want to join meeting, but have to wait for initialization
completableMeetingService.await().joinMeetingWithParams

// completing deffered in some listener
completableMeetingService.complete(zoomSDK.meetingService)
Run Code Online (Sandbox Code Playgroud)