将 GWT 中的 Java 回调传递给 returns Promise 的 JSNI 方法?
Passing a Java callback in GWT to JSNI method which returns a Promise?
我是 Promises 的新手,需要一些关于如何在从 Java 调用的 JSNI 方法中处理返回的 Promise 的建议。
由于 GWT 的旧版本 2.7,无法使用 JsInterop。
任何建议表示赞赏。
感谢您的宝贵时间!
如果您只需要读取 return 对象的属性,您可以尝试
将其视为 JSONObject
.
或者,您可以在 promise 的解析器函数中调用 Java 对象的方法来检查条件以决定是否要 resolve/reject。
p.then()
可以用 onFulfilled
/onRejected
函数调用,只是包装 Java 方法调用来处理结果。
示例:
public class PromiseWrapper {
boolean evaluate(String value) {
return value != null ? true : false;
}
void onFulfilled(String value) {
// use value
}
void onRejected(Strin reason) {
// use reason
}
public native void doSomethingAynchronously() /*-{
var p = new Promise(
function(resolve, reject) {
var value = null; // Get value from somewhere
if(this.@com.company.project.PromiseWrapper::evaluate(Ljava/lang/String;)(value)) {
resolve(value);
}
else {
reject("Because");
}
}
);
p.then(function(value) {
this.@com.company.project.PromiseWrapper::onFulfilled(Ljava/lang/String;)(value);
},
function(reason) {
this.@com.company.project.PromiseWrapper::onRejected(Ljava/lang/String;)(reason);
}
);
}-*/;
}
这是一个未经测试的例子。
我是 Promises 的新手,需要一些关于如何在从 Java 调用的 JSNI 方法中处理返回的 Promise 的建议。 由于 GWT 的旧版本 2.7,无法使用 JsInterop。 任何建议表示赞赏。
感谢您的宝贵时间!
如果您只需要读取 return 对象的属性,您可以尝试
将其视为 JSONObject
.
或者,您可以在 promise 的解析器函数中调用 Java 对象的方法来检查条件以决定是否要 resolve/reject。
p.then()
可以用 onFulfilled
/onRejected
函数调用,只是包装 Java 方法调用来处理结果。
示例:
public class PromiseWrapper {
boolean evaluate(String value) {
return value != null ? true : false;
}
void onFulfilled(String value) {
// use value
}
void onRejected(Strin reason) {
// use reason
}
public native void doSomethingAynchronously() /*-{
var p = new Promise(
function(resolve, reject) {
var value = null; // Get value from somewhere
if(this.@com.company.project.PromiseWrapper::evaluate(Ljava/lang/String;)(value)) {
resolve(value);
}
else {
reject("Because");
}
}
);
p.then(function(value) {
this.@com.company.project.PromiseWrapper::onFulfilled(Ljava/lang/String;)(value);
},
function(reason) {
this.@com.company.project.PromiseWrapper::onRejected(Ljava/lang/String;)(reason);
}
);
}-*/;
}
这是一个未经测试的例子。