javascript - 使用 Strongloop 环回实现 Q

标签 javascript node.js promise q loopbackjs

Q 是 "supporting module" of loopback .我不完全确定这意味着什么,但我假设它至少意味着可以将 Q 与环回的持久模型函数一起使用,例如 find()findOne() 。我想知道如何正确设置如下内容:

app.models.Question.findOne({
    where: {name: "My Question"}
}, function (err, result) {
    throw err if err
}).then(function () {
    console.log("success")
})

我已经使用 NPM 在我的项目目录中安装了 Q,但据我所知,app.models.Question.findOne() 仍然返回未定义的,而不是可用的 Q promise。

根据loopback docs , 使用 Q,

If a function cannot return a value or throw an exception without blocking, it can return a promise instead.

在这种情况下,我需要做什么才能让环回返回 promise ?

最佳答案

LoopBack 查询此时不返回 promise 。请在 LoopBack 存储库中发布功能请求以提醒我们(当然是在阅读 https://github.com/strongloop/loopback/wiki/Issues 之后)。但是,我确实相信 ES6 promise 在路线图上。

也就是说,您可以创建自己的 promise 并将其返回:

var deferred = Q.defer();
app.models.Question.findOne({
  where: {
    name: 'My Question'
  }
}, function(err, result) {
  if (err) return deferred.reject(err);
  deferred.resolve(result);
});
return deferred.promise;

注意 我还没有对此进行测试,但它应该符合这些原则。参见 https://github.com/kriskowal/q#using-deferreds了解更多信息。

关于javascript - 使用 Strongloop 环回实现 Q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28430480/

相关文章:

javascript - 考虑 undefined variable

javascript - 设置超时以任何条件停止

javascript - express.js 4 has broken request.on ('data' ) 触发

node.js - Facebook Messenger Bot - 如何使用 NodeJS 获取用户信息?

http - 在未经授权的异步请求上 Play Framework 服务器端重定向

javascript - 等待数据返回,与 Angular 和 Breeze 同步调用

javascript - 我如何确定垃圾收集器正在收集哪些对象?

php - Node.js 和 PHP session 共享

javascript - 将第二个值传递给 promise

javascript - Angular 4 错误 : Expression has changed after it was checked