【发布时间】:2017-08-29 15:26:26
【问题描述】:
我尝试了文档中的示例https://docs.google.com/document/d/10fmlEYIHcyead_4R1S5wKGs1t2I7Fnp_PaNaa7XTEk0/edit# 在@JsFunction 部分中,但它只提供了从 javascript 调用 java 函数的想法。
我的 GWT 应用程序中包含一个 javascript 文件,其中包含以下代码:
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 注释从我的应用程序中调用函数“startLogon()”——我需要一个包装器。我尝试了以下两个示例,但均未成功:
Implement Javascript Function Callback with GWT JsInterop
JsInterop wrapping a javascript function property
不得不说,我的 JavaScript 知识很差。
谁能给我一个代码示例? 非常感谢!
【问题讨论】:
-
@EJoshuaS 因为 GWT 将 Java 编译成可比较的 JS,这就是问题所在。
-
你能澄清一下返回值是什么吗?它是一个 Promise,您将在 Java 代码中使用它吗?还是直接用 Java 调用
startLogon()就可以了?
标签: javascript gwt gwt-jsinterop