2017-11-03 5 views
3

WebAssemblyからXmlHttpRequestを呼び出すことが最も効果的な方法を理解しようとしています。WebAssemblyからXmlHttpRequestを呼び出す

私はhttp://webassembly.org/getting-started/js-api/を見つけました。JavaScriptとWebAssemblyの間の呼び出し方法を説明しているようです。

  • 私はエクスポートWebAssembly機能を書くXmlHttpRequestの
  • を呼び出して、私はWebAssemblyにインポートJavaScript関数を書く:これはそれを動作するように取得するためには

    は、私は次の操作を行う必要があり、私には思われますXmlHttpRequestが完了したときにJavaScriptが呼び出すWebAssemblyから取得します。

ダイナミックな並行XmlHttpRequestsを実行したい場合は、インポートされた関数をJavaScriptを使ってエクスポートした関数に戻す必要があります。

私は今、質問の数を持っている:

  1. は正確上記とそれを行う方法ですか?
  2. URIをWebAssemblyからXmlHttpRequestに転送するにはどうすればよいですか? WebAssembler.MemoryオブジェクトをWebAssemblyとの間でインポートまたはエクスポートしてURIを配置する必要がありますか?
  3. 答えが2の場合、このWebAssembler.Memoryオブジェクトはグローバル変数のようになりますが、これはスレッドが1つしかないために機能します。正しい?
  4. 2と同様に、XmlHttpRequestの結果をWebAssemblyに戻すにはどうすればよいですか?また、インポート/エクスポートされたWebAssembler.Memoryオブジェクトでも?
  5. 4と関連して、XmlHttpRequestの結果を最も効率的な方法でWebAssemblyに取得するにはどうすればよいですか?可能な限り少数のコピーで? XmlHttpRequestの結果をJavaScriptコードのWebAssembler.Memoryオブジェクトにコピーする必要がありますか?そして、このWebAssembler.Memoryオブジェクトはグローバル変数ですか?私は、WebAssemblyのフォームをJavaScriptに渡して、WebAssember.Memoryのどこに結果を置くべきかを示すインデックスを渡すことができると思いますか?

答えて

3
  1. はい、これは正しいです。
  2. this question about strings
  3. で説明したようにあなたはWebAssemblyがスレッドをサポートしている場合、あなたはJavaScriptを呼びたいと単なる文字列をヒープに割り当てることができ、そのポインタ+長さを渡し、そしてからの復帰に削除し、文字列としてURIを転送することができますその呼び出し。
  4. はい、文字列のように戻します。
  5. 現在、あなたはコピーを作成する必要がありますが、コミュニティグループは将来的にコピーが少なくなるような方法を検討しています。最新のそのようなディスカッションのノートare available from the WebAssembly meetings repository
+0

ありがとうございます。これは非常に便利でした。 Aのフォローアップ: Cからコンパイルするとき、私はJavaScriptとWebAssemblyの間で共有されているWebAssembly.Memoryインスタンスが常にあることを理解しています。これはCプログラムで使用されるメモリです。 追加のWebAssembly.Memoryインスタンスを共有することはできますか?それはC側からどのように見えますか? JavaScriptがHttpXmlRequestからの応答に独自のメモリを割り当て、それをWebAssemblyに渡すことができるように、これは役に立つと思います。 – user1772004

+1

現在、WebAssemblyは単一のメモリしかサポートしていません。将来的にはより多くをサポートする計画があります。それは彼らが適切に見える方法を公開することは、ツールチェーンに依存します。 LLVMには、これを行うための 'addrspace'に対するIRがあり、いくつかの言語はLLVMでそれを使用します。 C++では、似たようなもの(セグメンテーション)のためのアロケータが作成されましたが、これを行うためのコードを書く必要がありました。 –

関連する問題