【发布时间】:2016-08-08 06:22:34
【问题描述】:
我正在设计一个用户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: 'user@example.com'})
.then((user) => {
console.log('User account', user);
});
但是,像上面这样定义我的 API 并不能实现我想要的,因为内部函数是返回承诺的函数,而外部函数(即findByEmail)最终不会返回承诺。如何确保外部函数使用内部函数返回的数据返回承诺?
当然,使外部函数接受回调是一种选择,但这意味着外部函数不再是可承诺的。
【问题讨论】:
标签: javascript promise ecmascript-6 es6-promise