我正在尝试在Angularjs应用中实现this promise pattern。但someUserContent
会根据需要返回值true
而非实际数据。如何将数据传送给控制器?
在我的控制器中:
.controller('MyCtrl',function() {
MyFactory.checkUser(userId) //returns true
.then(MyFactory.prepDatabase()) //returns true
.then(Myfactory.getUserContent()) //returns a someUserData
.then(function(someUserData) {
//do some stuff with all this data
});
}
工厂:
.factory('MyFactory', function($q,$http....) {
MyFactory.prototype.checkUser = function(user_id) {
var self = this;
this.db = new PouchDB('users', {location: 'default'});
return $q.when(true);
}
Myfactory.prototype.getUserContent = function() {
if (!self.someUserData) {
return $q.when(self.db.allDocs({ include_docs: true}))
.then(function(docs) {
self.someUserData = docs.rows.map(function(row) {
return row.doc;
});
return $q.when(self.someUserData);
})
} else {
return $q.when(self.someUserData);
}
}
}
答案 0 :(得分:0)
尝试传递引用而不是调用方法。你正在进行异步调用,它需要等待promise返回,当你在内部执行它们时,他们没有承诺这就是你得到错误的原因。
Dockerfile
并更改您的工厂
.then(MyFactory.prepDatabase)
.then(Myfactory.getUserContent)