我設計的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在此示例中不需要。一次承諾只能一次解決或拒絕。有些人可能更願意爲了清晰而在那裏看到一個回報,這對正確執行不是必需的。如果有任何額外的處理正在進行,當然需要回報。 –