【发布时间】:2019-04-27 11:02:13
【问题描述】:
我正在浏览 mongoose 文档时,我无意中发现了
Mongoose 查询不是承诺。他们有一个用于 co 的 .then() 函数 和 async/await 作为一种方便。如果你需要一个成熟的承诺, 使用 .exec() 函数。
用这个例子
var query = Band.findOne({name: "Guns N' Roses"});
assert.ok(!(query instanceof Promise));
// A query is not a fully-fledged promise, but it does have a `.then()`.
query.then(function (doc) {
// use doc
});
// `.exec()` gives you a fully-fledged promise
var promise = query.exec();
assert.ok(promise instanceof Promise);
promise.then(function (doc) {
// use doc
});
现在,当他们说 完全成熟的承诺 时,我不明白他们的意思,比如对我来说 .then() 应该是一个承诺,然后它还允许异步和等待。
那么有人可以解释一下完全成熟的承诺是什么意思吗?
参考链接:https://mongoosejs.com/docs/promises.html#queries-are-not-promises
【问题讨论】:
-
"like for me
.then()应该是一个承诺" - 但是如果有一个then但它不是一个承诺呢?我们称之为a thenable。
标签: javascript node.js mongoose