小编Jul*_*man的帖子

jquery when/then(也就是/ when)不等待

我看了很多使用这种语法的样本,但我看不出我做错了什么."then"函数在ajax调用返回之前运行.

我也试过使用$ .deferred和其他一些模式无济于事.

有人能看到我错过的东西吗?

我已经调试过,可以在ajax调用返回成功(或错误)数据之前看到在done/then内部进行的调用.

谢谢你的帮助.

主要电话:

this.addFirstTask = function(task) {
    var totalHours = GetHours();
    $.when(totalHours).done(function (data) {
        task.TaskHours(data);
        self.add(task);
    });
};
Run Code Online (Sandbox Code Playgroud)

它调用以下ajax函数:

function GetHours() {
    $.ajax({
        url: "/api/tst/GetMyData",
        type: 'GET',
        dataType: 'json',

        success: function(data) {
           return data;
        },

        error: function(data) {
            return 0;
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

谢谢!

验尸:

除了将返回添加到ajax调用之外,根据其他建议,我从ajax调用中删除了成功和错误,并将addFirstTask更改为:

this.addFirstTask = function(task) {
    var totalHours = GetHours();
    $.when(totalHours)
     .then(function (data) {task.TaskHours(data);})
     .done(function () { self.add(task); });
};
Run Code Online (Sandbox Code Playgroud)

如果GetHours成功,我更新TaskHours值.如果失败了,我就跳过它.我意识到DONE就像.NET的try/catch中的"FINALLY".因此,不是立即添加任务,然后让我的可观察绑定在值返回时更新它,即使self.add也是异步调用的一部分.

ajax jquery asynchronous deferred

14
推荐指数
2
解决办法
3万
查看次数

EF6 SQLQuery非常慢但数据库速度非常快

我有一个性能问题,我们做了一堆分析,并被卡住了.希望你们其中一个人之前见过这个.

我调用DbContext.Database.SqlQuery数据库部分需要3ms,但完整执行需要9秒.

我们使用EF Profiler来发现这一点,我们也直接在SQL Server Management Studio中运行SQL,它是即时的.

我们也使用了一瞥而无法深入了解这个过程.

结果类型不是模型中的实体,因此我们确信不涉及跟踪.

我们也知道这不是针对上下文执行的第一个查询,因此我们不会在此查询上支付EF启动成本.

我们尝试过.net分析器,运行它有很多问题我们决定我们应该问.

有关如何挖掘和解决这个问题的任何提示?

编辑:此查询的结果集是1行,4列(十进制)

代码行只是:

var list=contextInstance.Database.SqlQuery<nonEntityType>(sqstring).ToList();
Run Code Online (Sandbox Code Playgroud)

SQL本身不是一个很长的字符串.我们将使用更详细的分析器来找出过程中的这个问题.

.net c# profiling entity-framework visual-studio-2013

11
推荐指数
1
解决办法
4610
查看次数

使用wpf datagridcomboboxcolumn的IsSynchronizedWithCurrentItem

(请参阅下面的我自己的回答,让我在让这个渗透天数和天数后想出来)我试图在WPF中实现以下场景.

我有一个数据网格,显示数据行以供查看和附加数据输入.这是一个新的应用程序,但有遗留数据.

过去的一个特定领域已随机输入数据.现在我们要将该字段的值限制为特定列表.所以我正在使用DataGridComboBoxColumn.FWIW我或者用包含ComboBox的DataGridTemplateColumn尝试了这个.

在运行时,如果现有值不在列表中,我希望它仍然显示.我似乎无法实现这一点.虽然我尝试了大量的解决方案(所有失败),但这里是最合乎逻辑的解决方案.

下拉列表的值列表在名为"months"的Windows资源中定义.

<DataGridComboBoxColumn x:Name="frequencyCombo"   MinWidth="100" Header="Frequency"
   ItemsSource="{Binding Source={StaticResource months}}"
   SelectedValueBinding="{Binding Path=Frequency,UpdateSourceTrigger=PropertyChanged}">
   <DataGridComboBoxColumn.ElementStyle>
     <Style TargetType="ComboBox">
       <Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
     </Style>
   </DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
Run Code Online (Sandbox Code Playgroud)

发生的事情是,如果列表中没有值,则显示为空白.我在运行时验证过IsSynchronizedWithCurrentItem元素确实是False.它只是没有做我期待的事情.

也许我只是走错了路.也许我需要将文本框与组合框结合使用.也许我需要编写一些代码,而不仅仅是XAML.我花了好几个小时尝试不同的事情,并且非常感谢解决方案.我有一些建议使用这个类或那个控件但没有解释如何使用它.

谢谢你!

wpf combobox data-synchronization

4
推荐指数
1
解决办法
3891
查看次数