为什么我的 angular 服务 'then' 方法返回已解决的承诺而不是值?

Why is my angular service 'then' method returning a resolved promise intead of the value?

我不明白为什么 "result" 是已解决的承诺而不是此处的实际值:

searchService.getLink(vm.queryObject).then(function (result) {
    console.log(result);
});

getLink()的代码如下:

function getLink(query) {
    return $resource(uriService.searchLink).save(query).$promise;
}

我在其他地方做了非常相似的事情,但我在 then() 回调中获得了值。我错过了什么?

Update 我错了,"result" 是一个 Resource 对象,上面有一个 promise。但问题仍然存在,为什么没有将 promise 的值传递给回调?

我发现这是因为我 return 从服务器获取数据的方式。我只是想 return 来自服务器的一个 id,所以我尝试这样做:

[HttpPost]
[Route("search/link")]
public int Link(SearchCriteria searchCriteria)
{
    return _searchService.Save(searchCriteria);
}

但是 $resource 必须要求从服务器 returned 一个对象,所以我将我的 return 类型修改为一个对象,然后该值开始显示为 属性 在那个对象上。

[HttpPost]
[Route("search/link")]
public GenericModel<int> Link(SearchCriteria searchCriteria)
{
    return new GenericModel<int> { Data = _searchService.Save(searchCriteria) };
}

GenericModel<T> 只是一个 class 我为此目的包装值。

public class GenericModel<T>
{
    public T Data { get; set; }
}