【发布时间】:2015-01-24 09:32:39
【问题描述】:
在 mongoose.js 中,函数在每次查询后返回(错误、结果)。我想编写自己的功能。
我认为答案是使用承诺,所以我写了这个
login: (user) ->
q.Promise (resolve, reject, notify) ->
console.log resolve
if _.has(user, 'password')
dashboard.users.find(user).exec().then (err, results) ->
if err then reject("Error occurred with the database")
if results then resolve(results) else reject("User not found")
else
reject("A password is required for login")
Auth.login(testuser).then (d) ->
console.log d, "done"
但经过研究,我发现这是一个anti pattern,并且代码不起作用(承诺永远不会解决/拒绝)。所以现在我不知道该怎么办了。
【问题讨论】:
-
你怎么知道承诺永远不会被解决/拒绝?我看不到您在任何地方都在使用实际的承诺。您的意思是从
login()方法返回承诺吗? -
是的,我忘记添加代码了,我现在就添加
-
就像我说的,你必须从
login()方法返回promise,这样login()的调用者才能使用它。 -
我的原始代码有这个,但它仍然是你所说的相同结果,我应该在最后返回 deferred.promise 对吗?
标签: javascript node.js coffeescript promise