JavaScript如何将事件用作函数的返回值?
问题场景
做electron项目的时候,需要对大量 外部 webview进行频繁操作,需要向引入的第三方页面里面传递JavaScript脚本代码,同时要获取到代码执行后的返回值。
自己得思路
传递JavaScript到第三方页面这个好说,在electron文档里面用webview.executeJavaScript(code);
函数就可以,获取他的返回值,我的思路是直接获取在控制台打印的数据,在electron文档里也有一个获取控制台消息的事件:
webview.addEventListener('console-message', (e) => {
console.log('console message:', e.message)
})
问题
现在有一个需求,是将这两个功能封装成一个函数,比如
function sendJavaScriptCode(webview,code){
}
参数1传入webview对象,code传入要传递的JavaScript脚本代码,然后这个函数的返回值就是在console获取到的信息。
可是,我不知道怎么把一个事件封装到函数里,让函数可以直接返回一个事件的传过来的值。
我刚刚接触这一块,正在恶补js基础,但是要学习的东西实在太多,这个需求马上就要了。有了解的大佬希望可以帮我解决一下这个问题,尽量用通俗易懂的方式。小弟在此感激不尽!
另外附上electron文档地址:https://www.electronjs.org/do...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题的本质在于,获取console信息是一个异步过程,所以你的函数是不可能同步返回e.message的,可以选择返回一个Promise,或者将函数写成async/await
举个Promise版本的例子: