我设计的API代码的用户API和一部分返回异步数据的外部功能的承诺如下:返回与从内部功能
module.exports = {
findByEmail: (email) => {
db.collection('Users').findOne(email: email), (err, result) => {
assert.equal(err, null);
return new Promise(resolve) => {
resolve(result);
}
}
}
}
我在这里的目的是使findByEmail
回报一个承诺,以便它可以被调用,如:
require('./models/User').findByEmail({email: '[email protected]'})
.then((user) => {
console.log('User account', user);
});
然而定义我的API像上面并没有达到我想要的,因为内部函数是返回的承诺之一,而外部功能(即findByEmail
)最终没有返回舞会伊势。我如何确保外部函数使用内部函数返回的数据返回一个promise?
当然,使外部函数接受回调是一种选择,但这意味着外部函数不再是可行的。
叫哦,是的!不能相信我错过了这个:| –
@AlexanderMac在此示例中不需要。一次承诺只能一次解决或拒绝。有些人可能更愿意为了清晰而在那里看到一个回报,这对正确执行不是必需的。如果有任何额外的处理正在进行,当然需要回报。 –