我不明白下面的部分
var q = require("q"),
BlogPost = require("../models/blogPost");
module.exports = {
getAllPosts: getAllPosts
};
function getAllPosts() {
var deferred = q.defer();
BlogPost
.find({})
.sort("-date")
.exec(function(error, posts) {
if (error) {
deferred.reject(error);
} else {
deferred.resolve(posts);
}
});
return deferred.promise;
}
我在控制器中找到了上面的代码,但是无法理解它。为什么最后我们使用return deferred.promise?我以后如何使用getAllPosts
?我们不能只返回帖子对象吗?
答案 0 :(得分:1)
您将使用一个返回承诺的函数,如下所示:
var getAllPosts = require('./your-module-name.js').getAllPosts;
getAllPosts()
.then(function(posts) {
//successfully process the posts
})
.catch(function(err) {
//handle the error
})
.finally(function(){
//clean up anything you need to...
})
答案 1 :(得分:0)
Promise
是异步结果的正确表示。
它有三种状态:
1→成功
- >错误
- >未决
deferred
是承诺的公正对象,它在处理上述状态之后返回。我们可以在没有承诺的情况下使用
javascript
代码,但有时我们必须将代码execute
设为asynchronous way
。
这就是我们使用承诺
的原因