Bu konuda birkaç makale okudum, ancak Promise.reject
hata atma ile hata atma arasında bir fark olup olmadığı hala net değil . Örneğin,
Promise.reject kullanma
return asyncIsPermitted()
.then(function(result) {
if (result === true) {
return true;
}
else {
return Promise.reject(new PermissionDenied());
}
});
Fırlatma kullanma
return asyncIsPermitted()
.then(function(result) {
if (result === true) {
return true;
}
else {
throw new PermissionDenied();
}
});
Benim tercihim throw
sadece daha kısa olduğu için kullanmak , ancak birinin diğerine göre herhangi bir avantajı olup olmadığını merak ediyordu.
throw
, setTimeout gibi eşzamansız bir geri arama içinden atılması durumunda reddedilen bir vaatle sonuçlanmamasıdır. jsfiddle.net/m07van33 @Blondie cevabınız doğru.
reject
olduğunu düşünüyorum ve param listemden çıkarmama izin veriyor .
.then()
İşleyicisi istisnayı yakalar ve otomatik olarak bir reddedilen vaadi haline döner. Atılan istisnaların yürütülmesinin özellikle hızlı olmadığını okuduğumdan, reddedilen sözü geri vermenin yürütmenin biraz daha hızlı olabileceğini tahmin ediyorum, ancak eğer bilmek önemliyse, birden fazla modern tarayıcıda bir test tasarlamanız gerekirdi. Ben şahsen kullanıyorumthrow
çünkü okunabilirliği seviyorum.