2

以下のコード スニペットを検討してください。WebApi コントローラーの Metadata メソッドは、以下の executeQuery に対して両方の回で呼び出されます。なぜでしょうか?

ありがとう、トラヴィス

 var manager = (typeof options.breezeController !== 'undefined') ? options.breezeController : Mosaic.Global.defaultBreezeManager();

        var query = breeze.EntityQuery
            .from("GetColonies")
            //.select("VIVLINE_GUID, VIVLINE_NAME") 
            .orderBy("VIVLINE_NAME");

        manager.executeQuery(query);

        manager.executeQuery(query)
            .then((data) => {
                this.viewModel.items.removeAll;
                this.prepData(data.results);
                this.viewModel.setSelectedValue(selectedModel);
            });
4

1 に答える 1

2

Breeze は、各クエリの前に、特定のサービスのクライアントにメタデータが存在するかどうかを確認します。メタデータが存在しない場合は、クエリを実行する前にメタデータを要求します。

私が推測しているのは、どちらかがメタデータを返す前に両方のクエリが開始されるということです。これにより、メタデータが複数回取得されます。ただし、いったんダウンすると、それ以上のリクエストは表示されません。

1 つの提案は、クエリの前にメタデータのロードを強制することです。つまり、

  manager.fetchMetadata().then(function() {
    manager.executeQuery(query1);

    manager.executeQuery(query2);
  }
于 2013-04-16T21:49:54.967 に答える