如何使用jsInterop从GWT调用JavaScript函数?
我在文件里试过这些例子 在@JsFunction一节中,它只给出了从javascript调用java函数的想法 我的GWT应用程序中包含一个javascript文件,代码如下:如何使用jsInterop从GWT调用JavaScript函数?,javascript,gwt,gwt-jsinterop,Javascript,Gwt,Gwt Jsinterop,我在文件里试过这些例子 在@JsFunction一节中,它只给出了从javascript调用java函数的想法 我的GWT应用程序中包含一个javascript文件,代码如下: var client = new Circuit.Client({ client_id: '78cafde2f6854ad5ad80a67c532687bc', scope: 'READ_USER_PROFILE,READ_CONVERSATIONS', domain: 'circuitsandb
var client = new Circuit.Client({
client_id: '78cafde2f6854ad5ad80a67c532687bc',
scope: 'READ_USER_PROFILE,READ_CONVERSATIONS',
domain: 'circuitsandbox.net'
});
function startLogon() {
client.logon()
.then(user => console.log('Logged on as ' + user.displayName))
.then(client.addEventListener('itemAdded', item => console.log('itemAdded event received:', item)))
.then(client.getConversations)
.then(conversations => {
console.log('Retrieved ' + conversations.length + ' conversations');
return client.addTextItem(conversations[0].convId, 'Hello World');
})
.then(item => console.log('Msg sent on ' + (new Date(item.creationTime)).toString()))
.catch(console.error);
}
现在,我想使用jsInterop注释从我的应用程序调用函数'startogon()'-我的be和包装器。我尝试了以下两个例子,但都没有成功:
我不得不说,我的JavaScript知识很差
有人能给我一个代码示例吗?
非常感谢 将此静态方法添加到任何类
@JsMethod(namespace = GLOBAL)
public static native void startLogon();
这将起作用,尽管您不能对返回的承诺做任何事情。如果您想使用返回的promise,我建议添加elemental2并改用promise startLogon()
,这样您就可以像这样使用它了:
startLogon().then(
success -> { console.log("success", success); return null; },
failure -> { console.log("failure", failure); return null; });
@EJoshuaS,因为GWT将Java编译成可比较的JS,这就是问题所在。您能澄清返回值是什么吗?这是一个承诺,您将在Java代码中使用它?还是只需在Java中调用
startogon()
,然后就可以了?