promise - 如何从嵌套的 kotlin.js.Promise 创建 Promise?

标签 promise kotlin kotlin-js-interop

kotlin.js.Promise有功能then有了这个声明:

open fun <S> then(
    onFulfilled: (T) -> S, 
    onRejected: (Throwable) -> S = definedExternally
): Promise<S>

我有两个函数a()b() 。他们都返回 Promise<Int> 。 (它们代表对服务器的一些请求。)我需要将它们组合起来并创建一个新函数,例如:

fun c(): Promise<Int> {
    a().then({
        b()
    })
}

但是这是不可能的,因为返回类型是 Promise<Promise<Int>>而不是Promise<Int> .

我认为这在 Javascript 中是可能的。如何在 Kotlin 中链接 Promise?

最佳答案

为此,您需要一个额外的Promise,例如:

fun c(): Promise<Int> {
    return Promise({ resolve, reject ->
        a().then({
            b().then(resolve, reject);
        });
    })
}

上面的代码也可以通过使用 single-expression function 来简化如下:

fun c() = Promise({ resolve, reject ->
    a().then({
        b().then(resolve, reject);
    });
});

关于promise - 如何从嵌套的 kotlin.js.Promise 创建 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44544125/

相关文章:

javascript - nodejs递归调用相同的api并顺序写入excel文件

android - 从资源字符串数组创建 ArrayList<String>

javascript - 没有webView的Android中的Kotlin调用Javascript函数

node.js - 捕获 Promise、Observable.fromPromise() 和订阅中的错误

javascript - 将解析值分配给全局变量 - promise

firebase - 从回收者 View 中选择用户数据后,将其加载到新事件中

kotlin - 使用 Kotlin JS 'fun <T> parse(text: String): T` 解析 JSON?

javascript - 如何在 Kotlin for Javascript 中为类设置静态属性

jquery - 如何与 jquery promise ?

android - 尝试从 Room 数据库实例中检索值时抛出 IllegalStateException