获取休息请求的结果而不是响应?

时间:2015-11-23 08:28:12

标签: angularjs rest restangular

我的控制器中有以下功能。

RestRequestsSrvc.getUserDetail()
  .then(
    function (response) {
      $scope.user.userDetail = response;
    },
    function (error) {
      // TODO
    });

如果我输入

console.log(RestRequestsSrvc.getUserDetail());

控制台记录一个承诺。我想设置一个变量的响应。如何修改我的代码以便获得响应而不是承诺?

3 个答案:

答案 0 :(得分:1)

返回承诺,因为您的请求是异步的。

你应该等待回复,

将console.log放在回调函数中应打印您的信息。

RestRequestsSrvc.getUserDetail()
  .then(
    function (response) {
      $scope.user.userDetail = response;
      console.log(response);
    },
    function (error) {
      // TODO
    });

答案 1 :(得分:0)

您可以将console.log转换为promise。然后

RestRequestsSrvc.getUserDetail()
  .then(
    function (response) {
      $scope.user.userDetail = response;
      console.log(response);
    },
    function (error) {
      // TODO
    });

问题在于,当你调用函数时它会被执行但不会等待结果,这就是你得到承诺的原因。一旦请求完成执行,就会调用.then的东西。这就是你处理成功或错误回调的地方。

答案 2 :(得分:0)

对服务器的请求是异步的,这意味着您必须处理回调内的响应。

您可以使用async false标志,但如果您在代码中稍后执行了独立模块,则不建议这样做。