2

私の会社は、従来の Dojo 構文から AMD に移行しています。モジュールを同期的に動的にロードする必要がある状況がいくつかあります。

Dojo の Require は同期読み込みを公式にサポートしていないようです (少なくともどこにも文書化されていません)。

require(["path/to/my/Module"]);

Fiddler に追加のレイテンシーを追加しましたが、次の行に移動する前に確実にロードされています。

これが信頼できるかどうかは誰にもわかりますか?2.0 で廃止される従来のスタイルからの単なる後遺症である場合、コードベースにこれを散らかしたくはありません。

4

1 に答える 1

2

CommonJs スタイルが必要な場合でも、AMD は同期ロードをサポートしません。モジュールが既にロードされている場合、require 関数は同期的にのみロードされます。見る:

モジュールをすでに非同期でロードしている場合は、commonJs スタイルの require を使用できます。

var lang = require("dojo/_base/lang");

ただし、まだロードしていない場合は、undefinedModuleエラーがスローされます (v1.9 でこれをテストしました)。これが v1.7 で機能する場合、これはDojo の以降のエディションで修正されています。

Dojo に新しい構成を渡すことによって、一時的に同期モードにすることはできません。

require({"async":false});

非同期設定はロード時にのみ設定できます ( http://dojotoolkit.org/reference-guide/1.9/loader/amd.html#loader-amd-configurationを参照)。したがって、初期ロードで非同期または同期のいずれかを選択すると、そこでスタックします。

同期操作を必要とするコードはすべてリファクタリングすることをお勧めします。これは通常可能であり、結果としてより優れた高速なコードになる可能性があります。

于 2013-07-03T13:03:02.197 に答える