我是Promises的新手,需要一些关于如何在从Java调用的JSNI方法中处理返回的Promise的建议。 由于GWT的旧版本2.7,无法使用JsInterop。 任何建议都表示赞赏。
谢谢你的时间!
答案 0 :(得分:0)
如果您只需阅读返回对象的属性,您可以尝试
将其视为JSONObject
。
或者,您可以在promise的解析器函数中调用Java对象的方法,以检查条件以决定是否要解析/拒绝。
可以使用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);
}
);
}-*/;
}
这是一个未经考验的例子。