它仔細看,這是不是最好的辦法
假設下面決心所有您功能,如果他們可以在用戶,或者解決爲falsey(false,'',null,undefined,0 etc)如果他們不能,並且d on't拒絕在沒有找到
getUserFromFileById(id).then(function(user) {
return user || getUserFromFileByEmail(email)
}).then(function(user) {
return user || getUserFromDatabaseById(id)
}).then(function(user) {
return user || getUserFromDatabaseByEmail(email)
}).then(function(user) {
if (user) {
console.log('woot got user');
}
else {
console.log('no user');
throw 'no user';
}
}).catch(function(fail) {
console.log('something went wrong');
});
說完看着它的用戶/拋出,這樣更有意義
這裏假設你的函數決心一個用戶否則拒絕承諾 - 我認爲這通常更有意義?沒有?
getUserFromFileById(id).catch(function() {
return getUserFromFileByEmail(email);
}).catch(function() {
return getUserFromDatabaseById(id);
}).catch(function() {
return getUserFromDatabaseByEmail(email);
}).then(function(user) {
console.log('woot got user', user);
}, function(fail) {
console.log('something went wrong', fail);
});
「否則」你的意思是「如果它拒絕」? – Bergi
是的,我在考慮最初拒絕,但現在,我不太確定,也許我應該用空值來解決?我可以控制這些功能。 –
我認爲拒絕是要走的路 - 儘管從我的回答中,你可以看到我最初是以另一種方式思考 - 我認爲我的答案涵蓋了兩個思想流派:p –