sql 服务器 Angularjs asp.netmvc 中数据更新前显示记录的搜索方法

Search method to show record before data update in sql server Angularjs asp.netmvc

Angular js函数更新一些记录。更新记录后,我正在调用搜索方法以在视图中显示数据。

但在未获取数据的搜索方法调用之前记录未更新,因此在视图中显示为空。

我在其 ng-click 此搜索方法调用上有单独的搜索按钮。几秒钟后,如果我单击该按钮,它会显示数据。

我的代码是,

vm.Update = function (value)
    {
        var test = value;
        searchCriteria = {
            From: vm.From,
            To: vm.To,
            Region: vm.Region,
            City: vm.SelectedCity
        }        
        surveyService.UpdateVisit(searchCriteria,value).then(function (d) {
            var Confrm = JSON.parse(d.data.data);
            if (d.data.status) {
                toastr.success(Updated, {
                    autoDismiss: false
                });
            }
            else {
                toastr.error(errorMsg);
            }
        });
        vm.searchVisit(0);
    }

此搜索访问调用和服务无法更新数据库中的数据,因此我没有看到任何记录。当我从单独的按钮调用此 searchvisit 方法进行搜索时,它会显示包含更新数据的记录。

希望得到您的建议,如何在调用 searchvisit 方法之前暂停执行,或者它得到任何响应而不是将执行控制移至 searchvisit 方法的任何替代方法。

谢谢

这是由于 JS 的异步特性。

根据您的代码,surveyService.UpdateVisit(searchCriteria,value) returns 一个承诺。因此,当vm.searchVisit(0);被调用时,surveyService.UpdateVisit(searchCriteria,value)还没有被解决,意味着更新还在进行中,还没有完成。 vm.searchVisit(0); 显示未更新的记录。

如果您的第二个函数依赖于第一个函数调用的值,请将其添加到成功回调中,如下所示。

surveyService.UpdateVisit(searchCriteria,value).then(function (d) {
        var Confrm = JSON.parse(d.data.data);
        if (d.data.status) {
            toastr.success(Updated, {
                autoDismiss: false
            });
        }
        else {
            toastr.error(errorMsg);
        }
        //Add this here. 
        vm.searchVisit(0);
    });