颇有新意。
我正在使用$ 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
});