javascript - 使用 .then 不会触发服务方法

标签 javascript angularjs

下面是我的 AngularJs 代码,我在成功完成 ProcessCriteria 调用后尝试调用 TalentPoolService.search(),但由于某种原因它没有命中 TalentPool.Service。我在这里做错了什么?

       $scope.Search = function (item, SolrLabel) {
    if (item != null) {
        console.log('Item: ' + item.Key);
        console.log('SolrLabel: ' + SolrLabel);
        console.log($localStorage.message);

        var pvarrData = new Array();
        pvarrData[0] = JSON.stringify($localStorage.message);
        pvarrData[1] = item.Key;
        pvarrData[2] = SolrLabel;

            $http({
                method: 'POST',
                url: '/api/TalentPool/ProcessCriteria',
                data: JSON.stringify(pvarrData),
                headers: { 'Content-Type': 'application/json' }
            }).then(function (response) {
                console.log('ProcessCriteria Success fired');
                $localStorage.message = response.data;
                console.log(response.data);
                return response.data;
                },
                    function (response) { 
                        // failed
                        console.log('facet post error occured!');
                    }).then(

                          function () {
                              TalentPoolService.search().then(function successCallback(response1) {
                                  $scope.talentpoolist = response1.data.model;
                                  $localStorage.message = response1.data.baseCriteria;
                                  console.log('TalentPoolService.search successCallback fired');
                                  setTimeout(function () {
                                      LetterAvatar.transform();
                                  }, 20);
                              }, function errorCallback(response1) {
                                  $scope.errors = [];
                                  $scope.message = 'Unexpected Error while saving data!!' + response;
                              })
                          }
                    );
    }
}

最佳答案

您必须返回数据才能使链接正常工作。

$http({
  method: 'POST',
  url: '/api/TalentPool/ProcessCriteria',
  data: JSON.stringify(pvarrData),
  headers: {
    'Content-Type': 'application/json'
  }
}).then(function(response) {
    console.log('ProcessCriteria Success fired');
    $localStorage.message = response.data;
    console.log(response.data);
    return response.data; // **return here**
  },
  function(response) {
    // failed
    console.log('facet post error occured!');
  }).then(

  function() {
    TalentPoolService.search().then(function successCallback(response1) {
      $scope.talentpoolist = response1.data.model;
      $localStorage.message = response1.data.baseCriteria;
      setTimeout(function() {
        LetterAvatar.transform();
      }, 20);
    }, function errorCallback(response1) {
      $scope.errors = [];
      $scope.message = 'Unexpected Error while saving data!!' + response;
    })
  }
);

为什么,因为您正在使用的下一个 then 需要一些数据来处理。所以,不返回就不能返回。所以,必须返回数据。

关于javascript - 使用 .then 不会触发服务方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44542468/

相关文章:

AngularJs 排序 orderBy 无法正常工作

javascript - 使用 contenteditable

javascript - 无法连接两个变量

javascript - 如何获取不同的模态内容

javascript - 在我使用 javascript + 假超链接隐藏当前内容并显示新内容的页面上启用 "Back"

javascript - AngularJS 地理位置数据更新

javascript - 如何使用 mongoose 操作从 mongo db 返回的数据

javascript - Electron:从 BrowserWindow 向 Electron 应用程序发送消息

angularjs - 为什么AngularJS核心需要检测模块ngLocale是否已经创建?

javascript - 使用 Angular Material 展开折叠列表项