This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// HTTP request handler | |
WebServer.create(configuration, route.get("/request", (req, res) -> { | |
// ( #1 ) An HTTP GET request is received. Get some request data | |
int requestId = getRequestId(req); | |
// Send the data to JavaScript. Perform computation in JS and | |
// send back to the HTTP client a response message when done. | |
executeJs(requestId).whenComplete((r, ex) -> { | |
if (ex != null) { | |
res.status(404) | |
.send("404 error"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Expose a JS asynchronous function to Java | |
Value asyncFunction = context.eval("js", "(async function(x) { return x; })"); | |
// Invoke the function. The result is a JavaScript Promise object | |
Value jsPromise = asyncFunction.execute(42); | |
// Register promise reactions | |
jsPromise.invokeMember("then", (Consumer<Object>) (result) -> { | |
System.out.println("JavaScript resolves: " + result); | |
}) | |
.invokeMember("catch", (Consumer<Throwable>) (error) -> { | |
System.out.println("JavaScript rejects: " + error); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
async function() { | |
// a Java object implementing the `then` method | |
let javaTrampoline = ... // created from Java | |
// create a JavaScript promise | |
let interopPromise = new Promise(javaTrampoline); | |
// register some promise reactions | |
try { | |
// await for the “interop” promise to resolve | |
let result = await interopPromise; | |
console.log('Java resolves: ' + result); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ThenableObject { | |
void then(Value resolve, Value reject) { | |
try { | |
Object someResult = computeSomething(); | |
resolve.executeVoid(someResult); | |
} catch (Throwable t) { | |
reject.executeVoid(t); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// a Java object implementing the `then` method (created from Java) | |
let javaExecutor = Java.type('some.awesome.Klass').createNew(); | |
// create a JavaScript promise | |
let interopPromise = new Promise(javaExecutor); | |
// register some promise reactions | |
interopPromise.then(result => { console.log('Java resolves: ' + result); }, | |
error => { console.log('Java rejects: ' + error); }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void then(Value resolve, Value reject); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ SKIP_JACOCO=true mvn test -Dtest=io.reactiverse.es4x.test.StackTraceTest | |
[INFO] Scanning for projects... | |
[INFO] | |
[INFO] ------------------------------------------------------------------------ | |
[INFO] Building es4x 0.11.1-SNAPSHOT | |
[INFO] ------------------------------------------------------------------------ | |
[INFO] | |
[INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce-maven) @ es4x --- | |
[INFO] | |
[INFO] --- jacoco-maven-plugin:0.8.5:prepare-agent (default) @ es4x --- |
NewerOlder