Рендеринг прокси, возвращаемых из асинхронного метода хост-объекта WebView2. ⇐ C#
-
Anonymous
Рендеринг прокси, возвращаемых из асинхронного метода хост-объекта WebView2.
Я использую WebView2 и ищу пример работы с массивом объектов в JavaScript, возвращаемым асинхронным методом хост-объекта C#. В конце концов, я хотел бы иметь возможность доступа к свойствам каждого прокси в возвращаемом массиве простым/прямым способом, но каждый член свойства объекта C# возвращается как обещание в JavaScript, что затрудняет работу с ними.
Например, это работает...
const ents = await window.chrome.webview.hostObjects.myType.GetEntitiesAsync(); for (const p Ents) { пусть имя = ждут p.name; console.log(имя); } НО я хочу просто получить доступ к свойствам непосредственно возвращаемых объектов в массиве, вот так...
for (const p of ents) { console.log(p.name); } ОБРАТИТЕ ВНИМАНИЕ, что я не хочу использовать синхронный window.chrome.webview.hostObjects.sync..., поскольку версия sync блокирует поток пользовательского интерфейса.
>
Вот метод C#, вызываемый приведенным выше кодом.
public async Task GetEntitiesAsync() { ждать Task.Delay(1000); возвращаться [ новый MyEntity {Name = "foo"}, новый MyEntity {Name = "bar"}, новый MyEntity {Name = "baz" } ]; } ОБНОВЛЕНИЕ: я понял, что следующее будет работать (обернуть вызов sync в Promise), но есть ли более простой способ, который мне не хватает?
const ents = await new Promise((resolve) => { const res = window.chrome.webview.hostObjects.sync.myType.GetEntities(); разрешить (рез); }); for (const p Ents) { console.log(p.name); }
Я использую WebView2 и ищу пример работы с массивом объектов в JavaScript, возвращаемым асинхронным методом хост-объекта C#. В конце концов, я хотел бы иметь возможность доступа к свойствам каждого прокси в возвращаемом массиве простым/прямым способом, но каждый член свойства объекта C# возвращается как обещание в JavaScript, что затрудняет работу с ними.
Например, это работает...
const ents = await window.chrome.webview.hostObjects.myType.GetEntitiesAsync(); for (const p Ents) { пусть имя = ждут p.name; console.log(имя); } НО я хочу просто получить доступ к свойствам непосредственно возвращаемых объектов в массиве, вот так...
for (const p of ents) { console.log(p.name); } ОБРАТИТЕ ВНИМАНИЕ, что я не хочу использовать синхронный window.chrome.webview.hostObjects.sync..., поскольку версия sync блокирует поток пользовательского интерфейса.
>
Вот метод C#, вызываемый приведенным выше кодом.
public async Task GetEntitiesAsync() { ждать Task.Delay(1000); возвращаться [ новый MyEntity {Name = "foo"}, новый MyEntity {Name = "bar"}, новый MyEntity {Name = "baz" } ]; } ОБНОВЛЕНИЕ: я понял, что следующее будет работать (обернуть вызов sync в Promise), но есть ли более простой способ, который мне не хватает?
const ents = await new Promise((resolve) => { const res = window.chrome.webview.hostObjects.sync.myType.GetEntities(); разрешить (рез); }); for (const p Ents) { console.log(p.name); }
Мобильная версия