Rumah >hujung hadapan web >tutorial js >Mengapakah `.then(berjaya, gagal)` Dianggap sebagai Anti-corak dalam Pengendalian Janji?
Dalam dokumentasi Bluebird Promise, .then(berjaya, gagal) dilabelkan sebagai antipattern. Apakah sebab di sebalik ini?
Berbeza dengan rantaian .then(success).catch(fail) yang disyorkan, menggunakan .then(success, fail) menimbulkan isu aliran kawalan:
Menggunakan .then(berjaya, gagal):
try { results = some_call(); } catch (e) { logger.log(e); break then; } else logger.log(results);
Menggunakan .then(success).catch(fail):
try { var results = some_call(); logger.log(results); } catch (e) { logger.log(e); }
Anticorak tidak digalakkan kerana ia mengehadkan pengendalian ralat kepada satu pengendali tangkapan terakhir. Walau bagaimanapun, ia boleh berguna dalam senario di mana:
Untuk mengelakkan panggilan balik berulang, anda boleh menggunakan corak berikut:
some_promise_call() .catch(function(e) { return e; // it's OK, we'll just log it }) .done(function(res) { logger.log(res); });
Sebagai alternatif, anda boleh memanfaatkan kaedah .finally() untuk tujuan ini.
Atas ialah kandungan terperinci Mengapakah `.then(berjaya, gagal)` Dianggap sebagai Anti-corak dalam Pengendalian Janji?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!