Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jsInterop从GWT调用JavaScript函数?_Javascript_Gwt_Gwt Jsinterop - Fatal编程技术网

如何使用jsInterop从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

我在文件里试过这些例子 在@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注释从我的应用程序调用函数'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()
,然后就可以了?