[$ promise:Promise,$ resolved:false]

时间:2016-01-08 17:03:46

标签: javascript angularjs angular-ui-router

角色很新。

我正在使用$ resource来获取Mongodb的约会列表。当资源返回时,我得到[$ promise:Promise,$ resolved:false],因此当我在下面执行时。

在控制台中挖掘[$ promise:Promise,$ resolved:false]时,我会看到所有约会。

在我在角度视图中呈现约会之前,我需要做一些业务规则检查。

我尝试过使用。然后没有变化。 $ resolve解决了什么:false是什么意思?

感谢您的帮助

var appointments = Appointments.findByCat({
    catId: $stateParams.catId
  });

  console.log(appointments); //This prints [$promise: Promise, $resolved: false]

   return appointments.length; // is 0 always

1 个答案:

答案 0 :(得分:4)

  

$ resolve解决了什么:false是什么意思?

这意味着承诺没有得到解决。换句话说,Appointments.findByCat是异步的,尚未完成检索值。您需要使用then

function doStuff() {
  return Appointments.findByCat({
    catId: $stateParams.catId
  }).then(function(appointments) {
    console.log(appointments);
    return appointments.length;
  });
}

问题是调用它的代码也必须具有promise意识。您不能直接使用函数的返回值(doStuff)。您还需要在调用者中使用then

// Won't work
var count = doStuff();
// Use count

// Will work
doStuff().then(function(count) {
   // Use count
});