Skip to content

enzowyf/promise4k

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A promise implementation for Kotlin/JVM. The Api is exactly the same as Promise in JavaScript.

Gradle

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
    
dependencies {
    compile 'com.github.enzowyf:promise4k:1.0.0'
}

Syntax

To learn about promises, read Using promises first.

Constructor

val promise = Promise { resolve, reject ->
    setTimeout({
        resolve("foo")
    }, 1000)
}

resolve

Promise.resolve("foo").then { value ->
    println("Get some data:$value")
}

reject

Promise.reject("foo").catch { reason ->
    println("Something wrong:$reason")
}

then

Promise.resolve("foo").then { value ->
    println("Get some data:$value")
}

or

Promise.resolve("foo")
    .then({ value ->
        println("Get some data:$value")
    }, { reason ->
        println("Something wrong:$reason")
    })

catch

Promise.resolve("foo")
    .then { value ->
        println("Get some data:$value")
    }.catch { reason ->
        println("Something wrong:$reason")
    }	

all

Promise.all(listOf(promise1, promise2, promise3)).then {
    println("All finish:$it")
}

race

Promise.race(listOf(promise1, promise2, promise3)).then {
    println("Race winner:$it")
}

Chaining

val p1 = Promise.resolve("foo")
val p2 = Promise.resolve("bar")

p1.then {
    println(it)
    p2
}.then {
    println(it)
    "Hello"
}.then {
    println(it)
    Promise.reject("Oh, no!")
}.catch {
    println(it)
    "Claim down"
}.then {
    println(it)
    throw Exception("Oh, my God!!!")
}.catch {
    println((it as? Exception)?.message)
}

About

A promise implementation for Kotlin/JVM.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages