Blazor Как мне получить `ijsobjectreference` при вызове функции JS, которая может вернуть` null`?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Blazor Как мне получить `ijsobjectreference` при вызове функции JS, которая может вернуть` null`?

Сообщение Anonymous »

Например, у меня есть модуль в TypeScript, такой как: < /p>
export function getIndexedDb() : IDBFactory | null
{
if (window.indexedDB)
return window.indexedDB;
else
return null;
}

Теперь я хочу получить ijsobjectreference его результата, поэтому я попробовал это в csharp:
await using var module = await jsRuntime.InvokeAsync("import", "xxxx.js");
await using var result = await module.InvokeAsync("getIndexedDb");

Он работает хорошо, когда есть window.indexeddb , но когда getIndexedDb () возвращает null , возникнет ошибка:
Uncaught (in promise) Error: Cannot create a JSObjectReference from the value 'null'.

(и я даже не могу поймать исключение в CSHARP. Метод CSHARP, кажется, просто остановился здесь, и более поздние коды не будут выполнены. Это ошибка?)
Итак, что мне сделать, чтобы решить эту проблему? Я не верю, что ниже-хорошая идея: < /p>
class Nullable
{
value: T | null;
constructor(value: T | null)
{
this.value = value;
}
getValue() : T | null
{
return this.value;
}
isNull() : boolean
{
return this.value === null;
}
}

export function getIndexedDb() : Nullable
{
if (window.indexedDB)
return new Nullable(window.indexedDB);
else
return new Nullable(null);
}


Подробнее здесь: https://stackoverflow.com/questions/742 ... ction-whic
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»