颇有新意。

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

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

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

我尝试使用.then不变。 $ resolved是什么意思:false是什么意思?

我在这里先向您的帮助表示感谢

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

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

   return appointments.length; // is 0 always

最佳答案

$ resolved是什么意思:false是什么意思?


这意味着诺言没有兑现。换句话说,Appointments.findByCat是异步的,并且尚未完成对值的检索。您需要使用then

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


问题在于调用该代码的代码还必须具有承诺感知能力。您不能直接使用函数的返回值(doStuff)。您还需要在调用方中使用then

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

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

10-06 15:26