Javascript angularjs:chain promises返回承诺而不是对象

Javascript angularjs:chain promises返回承诺而不是对象,javascript,angularjs,angular-promise,chain,Javascript,Angularjs,Angular Promise,Chain,我有一个承诺链,我想返回一个对象,而不是一个承诺。相反,我得到了一个承诺。 这就是功能: self.get = function(id) { var parameters = [id]; var orders = {} return DBA.queryAgent("SELECT * FROM Orders WHERE " + column_id + " = ?", parameters).then(function(result) { return

我有一个承诺链,我想返回一个对象,而不是一个承诺。相反,我得到了一个承诺。 这就是功能:

self.get = function(id) {
    var parameters = [id];
    var orders     = {}
    return DBA.queryAgent("SELECT * FROM Orders WHERE " + column_id + " = ?", parameters).then(function(result) {
        return DBA.getById(result);
    }).then(function(result) {
        order = result;
        return self.getProdutcs(id);
    }).then(function(result) {
        order.Products = result;
        return order;
    });
}
我想

service.get(1)
返回一个对象,我得到一个承诺。我错在哪里


谢谢

您可以通过执行以下操作来访问该值:

  service.get.then(function(result) {
    console.log(result);   
  });

您可以通过执行以下操作来访问该值:

  service.get.then(function(result) {
    console.log(result);   
  });
从$q开始

调用承诺的
然后
方法将返回一个新的派生承诺

这是写作的方式。因此,您必须像这样访问它

 service.get.then(function(result) {
    // whatever
  });
从$q开始

调用承诺的
然后
方法将返回一个新的派生承诺

这是写作的方式。因此,您必须像这样访问它

 service.get.then(function(result) {
    // whatever
  });

我知道我可以做到,但我想知道我怎么做不到。函数
then()
返回一个承诺。这就是他们的工作方式。如果不希望它返回承诺,那么可以同步运行该命令并阻塞线程,或者将回调函数传递给get方法并调用它,而不是使用匿名函数。承诺的意义在于不做这两件事。谢谢你,你是对的。我忘记了异步事实不确定为什么我的答案没有被标记为选中的答案或没有获得投票:(它包含了所有必要的信息。我知道我可以做到,但我想知道我怎么做不到。
then()
函数返回一个承诺。这是它们的工作方式。如果您不希望它返回承诺,那么您可以同步运行该命令并阻止线程,或者将回调函数传递给get方法并调用它,而不是使用匿名函数。承诺的重点是不做这两件事都要做,这是正确的t、 我忘记了异步事实我不知道为什么我的答案没有被标记为选中的答案或者没有获得投票:(它包含了所有必要的信息。我知道了,谢谢。我忘记了异步事实。我知道了,谢谢。我忘了异步事实。