Как получить файл JSON в веб-сборке

Моя async реализация метода повтора:

public static async Task<T> DoAsync<T>(Func<dynamic> action, TimeSpan retryInterval, int retryCount = 3)
    {
        var exceptions = new List<Exception>();

        for (int retry = 0; retry < retryCount; retry++)
        {
            try
            {
                return await action().ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                exceptions.Add(ex);
            }

            await Task.Delay(retryInterval).ConfigureAwait(false);
        }
        throw new AggregateException(exceptions);
    }

Ключевые моменты: вместо этого я использовал .ConfigureAwait(false); и Func<dynamic> Func<T>

0
задан mbj 15 January 2019 в 10:00
поделиться

1 ответ

Вы получаете ошибку, потому что ваш WASM имеет операторы импорта, в то время как ваш вызов instantiateStreaming не отправляет importObject.

Но основной способ использования WASM из Javascript намного проще, чем: просто определите функцию в WASM, которую вы можете вызывать из JS, а затем, например, выполните «выборку» из JS («add.wasm») :

(module
  (type $t0 (func (param i32 i32) (result i32)))
  (func $add (type $t0) (param $p0 i32) (param $p1 i32) (result i32)
    get_local $p0
    get_local $p1
    i32.add)
(export "add" (func $add)))

А затем вызвать его из Javascript:

const wasmInstanceFromFile = await WebAssembly.instantiateStreaming(await fetch('add.wasm'));
let sum = wasmInstanceFromFile.instance.exports.add(1,2);
0
ответ дан Adi Levin 15 January 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: