【发布时间】:2018-04-13 23:28:39
【问题描述】:
我对从 C# 返回到 JS 的数据有问题。 CefSharp 配置:
Cef.Initialize();
CefSharpSettings.WcfEnabled = true;
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
browser = new ChromiumWebBrowser("")
{
Dock = DockStyle.Fill
};
this.Controls.Add(browser);
SM = new ScriptManager(browser);
browser.RegisterAsyncJsObject("external", SM); //"Support" for C# methods from JavaScript
我正在尝试从 JS 调用 C# 方法:
...
var UserID_array = window.external.loadUsrIDs(usr_names); //usr_name -> array of user names
在C#中方法的声明如下:
class ScriptManager
{
...
public int[] loadUsrIDs(object usr_names = null) //by default if usr_names == null then return all user IDs
{
...//reading the database
return id_users.ToArray(); //from List<int> to int[]
}
}
不幸的是,我总是得到以下值([object Promise])而不是 Int 数组(int[]) - 测试代码:
var UserID_array = window.external.loadUsrIDs(usr_names);
alert(UserID_array); //alert - only for tests
//Alert function always return value: **[object Promise]**
如何在 JS 中通过 C# 方法访问返回的数据?
问候
马辛
【问题讨论】:
-
文档表明它总是会返回一个承诺。暗示,我认为它根本不会检查返回类型或使用它。
-
你只需等待 promise 或使用 then 函数。
-
尝试只使用外部关键字,从js方法中移除WINDOW
标签: javascript c# .net chromium-embedded cefsharp