我正在使用带有 Node js 的 when 库。我创建了一个延迟对象,将解析放在封装的 Mongoose findOne() 函数中,然后在外面返回承诺。但似乎我的承诺总是在检索数据之前返回。
User.prototype.getProfile = function(criteria) {
var deferred = when.defer();
var options = {
criteria: criteria,
select: 'name id email'
};
this.User.load(options, function(err, data) {
if (data) {
this.name = data.name;
this.email = data.email;
this.id = data.id;
} else {
return false;
}
console.log(data);
deferred.resolve();
});
console.log('returning promise');
return deferred.promise;
};
呼叫者
User.getProfile(req.query).then(
function success(data) {
res.send('Hello ' + User.name);// Hello ''
}
);
'returning promise'
之前的输出data