WebView2 从 ExecuteScriptAsync 返回承诺

问题描述

目前,WebView2 API 允许我们通过调用 ExecuteScriptAsync 方法在托管页面中执行 JS。返回类型是 Task<string>。在一些页面中,我试图集成来自 JS 的返回类型是 Promise<string>。有什么办法可以得到解析后的 promise 的结果,还是需要确保页面中的函数是同步的才能返回结果?

解决方法

不幸的是,不直接支持。您可以在我们的 github project 上提出功能请求。如果我们可以为此添加支持,那就太好了。

目前 ExecuteScriptAsync 只会从同步执行的脚本中为您提供有意义的返回值。

作为一种解决方法,您需要使用 ExecuteScript 来启动异步脚本执行,然后使用 promise 完成将消息从脚本发布到您的主机应用程序,而不是在脚本中返回承诺,您为其明确添加了 { {3}}。