首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不知道为什么一个承诺没有完成

不知道为什么一个承诺没有完成
EN

Stack Overflow用户
提问于 2014-08-25 15:24:31
回答 2查看 43关注 0票数 1

以前在我的角度控制器里,我有:

代码语言:javascript
复制
var getResponse = function () {
    $http.post("api/screen/", { Key: 'banana', value: null })
        .then(onComplete, onError);
    };
var onError = function (reason) {
        $scope.error = "Fail";
    };
var onComplete = function (response) {
        $scope.s = response.data;
    };
getResponse()

我能够通过HTML页面上的数据绑定看到{{ s }}。

然后,我决定通过使用以下方法创建一个单独的服务来重构控制器:

代码语言:javascript
复制
var postScreen = function () {
    return $http.post("api/screen/", { Key: 'banana', value: null });
}

我的控制器中有这个( onComplete,onError和以前一样)

代码语言:javascript
复制
var getResponse = function () {
    formulaservice.postScreen(onComplete, onError);
}

现在{{ s}不显示在HTML页面的数据绑定上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-25 15:30:32

在这里,您使用两个参数调用postScreen函数,但是它不采用定义它的任何方式:

代码语言:javascript
复制
var getResponse = function () {
    formulaservice.postScreen(onComplete, onError);
}

相反,请使用.then在其完成后挂钩。

代码语言:javascript
复制
var getResponse = function () {
    formulaservice.postScreen().then(onComplete, onError);
}
票数 2
EN

Stack Overflow用户

发布于 2014-08-25 15:38:51

您的新postScreen()函数正在返回一个角承诺对象。您需要调用诺言对象上的.then()来执行您想做的事情。我建议将您的服务函数更改为将回调方法作为参数。

代码语言:javascript
复制
var postScreen = function (successCallback, errorCallback) {
  $http.post("api/screen/", { Key: 'banana', value: null })
    .success(function(result) {
      successCallback(result);
    })
    .error(function(error) {
      errorCallback(error);
    });
}

或者,您可以在服务方法上调用.then:

代码语言:javascript
复制
var getResponse = function () {
  formulaservice.postScreen().then(function() {
    //do something with onComplete, onError
  });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25489243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档