Этот вопрос относится к библиотеке веб -работников Comlink и, в частности, с использованием comlink.proxy . Рассмотрим следующую ситуацию: < /p>
// worker.ts
import * as Comlink from 'comlink';
export class Foo { ... }
export class Bar {
makeFoo () {
return Comlink.proxy(new Foo);
}
useFoo (foo: Foo) { ... }
}
Comlink.expose(Bar);
< /code>
// main.ts
import type { Foo, Bar } from './worker.ts');
import * as Comlink from 'comlink';
const worker = new Worker('./worker.ts');
const bar: Comlink.Remote = await new Comlink.wrap(worker);
const foo: Comlink.Remote = await bar.makeFoo();
await bar.useFoo(foo);
До последней строки все работает, как и ожидалось: foo и bar в основном потоке - прокси для foo и bar Случай, которые живут на работнике, соответственно. Последняя строка (await bar.useFoo(foo)) - это то, где возникают проблемы; Намерение состоит в том, чтобы прокси-сервер автоматически развернулся и получит экземпляр незаистекания обратно на сторону работника, но с учетом этого вместо этого приводит к ошибке (приводит к ошибке (ошибка (приводит к ошибке (obj is undefined).
Есть ли способ достичь этого в пределах того, что предлагает Comlink? Прокси -foo к основному потоку вообще и вместо этого полагается на уровень косвенности, назначая и возвращая уникальные идентификаторы/ручки для отдельных экземпляров foo , созданных через Makefoo и передавая их в Usefoo . Основным недостатком такого подхода является очевидное увеличение сложности, особенно по мере того, как растет публичный API Foo :
// with a proxy:
await foo.method1(arg1, arg2);
await foo.method2(arg1);
// with a handle:
await bar.fooMethod1(fooHandle, arg1, arg2);
await bar.fooMethod2(fooHandle, arg1);
Подробнее здесь: https://stackoverflow.com/questions/794 ... d-function
Можно ли передать объект, просокий, прокси-прокси-функцию? ⇐ Javascript
Форум по Javascript
-
Anonymous
1739550030
Anonymous
Этот вопрос относится к библиотеке веб -работников Comlink и, в частности, с использованием comlink.proxy . Рассмотрим следующую ситуацию: < /p>
// worker.ts
import * as Comlink from 'comlink';
export class Foo { ... }
export class Bar {
makeFoo () {
return Comlink.proxy(new Foo);
}
useFoo (foo: Foo) { ... }
}
Comlink.expose(Bar);
< /code>
// main.ts
import type { Foo, Bar } from './worker.ts');
import * as Comlink from 'comlink';
const worker = new Worker('./worker.ts');
const bar: Comlink.Remote = await new Comlink.wrap(worker);
const foo: Comlink.Remote = await bar.makeFoo();
await bar.useFoo(foo);
До последней строки все работает, как и ожидалось: foo и bar в основном потоке - прокси для foo и bar Случай, которые живут на работнике, соответственно. Последняя строка (await bar.useFoo(foo)) - это то, где возникают проблемы; Намерение состоит в том, чтобы прокси-сервер автоматически развернулся и получит экземпляр незаистекания обратно на сторону работника, но с учетом этого вместо этого приводит к ошибке (приводит к ошибке (ошибка (приводит к ошибке (obj is undefined).
Есть ли способ достичь этого в пределах того, что предлагает Comlink? Прокси -foo к основному потоку вообще и вместо этого полагается на уровень косвенности, назначая и возвращая уникальные идентификаторы/ручки для отдельных экземпляров foo , созданных через Makefoo и передавая их в Usefoo . Основным недостатком такого подхода является очевидное увеличение сложности, особенно по мере того, как растет публичный API Foo :
// with a proxy:
await foo.method1(arg1, arg2);
await foo.method2(arg1);
// with a handle:
await bar.fooMethod1(fooHandle, arg1, arg2);
await bar.fooMethod2(fooHandle, arg1);
Подробнее здесь: [url]https://stackoverflow.com/questions/79439969/is-it-possible-to-pass-a-comlink-proxied-object-to-a-proxied-function[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия