Menggunakan Panggilan Balik dalam Janji .kemudian Kaedah: Anti-Corak
Amalan menyediakan fungsi panggil balik kepada perkhidmatan AngularJS seperti yang dilihat dalam coretan kod yang anda berikan mungkin kelihatan mudah, tetapi ia mengikut corak anti. Pendekatan ini mengganggu aliran pengaturcaraan tak segerak dan penyongsangan kawalan yang dimaksudkan oleh Promises.
Mengapa ia Anti-Corak?
-
Mengganggu Rantaian: Janji kaedah .then membolehkan anda merantai berbilang operasi tak segerak. Dengan menggunakan panggilan balik, anda kehilangan keupayaan untuk meneruskan dengan mudah memproses hasil satu operasi dalam operasi berikutnya.
-
Penyongsangan Kawalan: Kod asal menyongsangkan kawalan pelaksanaan dengan menghantar panggil balik daripada modul pengguna kepada modul pembekal. Ini menjadikan lebih sukar untuk mengurus dan menyahpepijat aliran pelaksanaan.
-
Kerumitan Janji yang Tidak Diperlukan: Janji menyediakan mekanisme untuk mengendalikan operasi tak segerak. Dengan membungkus janji dalam panggilan balik, anda memperkenalkan kerumitan yang tidak perlu dan mengaburkan niat kod.
Penyelesaian Pemfaktoran Semula:
Untuk memfaktorkan semula kod dan menghapuskan isu ini , anda boleh menggunakan kaedah .then biasa tanpa panggilan balik fungsi:
var getTokens = function() {
return $http.get('/api/tokens');
};
Salin selepas log masuk
Dalam modul pengguna, anda boleh terus menggunakan .kemudian untuk merantai operasi:
yourModule.getTokens()
.then(function(response) {
// handle it
});
Salin selepas log masuk
Faedah Kod Refactored:
-
Mengekalkan Rantaian: Dengan membalas Janji daripada fungsi getTokens, anda boleh merantai operasi seterusnya dengan mudah.
-
Memelihara Kawalan: Modul pengguna mengawal pelaksanaan operasi async tanpa bergantung pada panggilan balik.
-
Memudahkan Kod: Kod yang difaktorkan semula memudahkan proses pengendalian tak segerak, menjadikan ia lebih mudah untuk difahami dan diselenggara.
Atas ialah kandungan terperinci Mengapakah Menggunakan Kaedah Panggilan Balik dalam Promise `.then` adalah Anti-Corak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!