Mengapa Panggilan Balik Memudaratkan dalam Rantai Janji AngularJS?

Patricia Arquette
Lepaskan: 2024-11-13 05:08:02
asal
362 orang telah melayarinya

Why are Callbacks Detrimental in AngularJS Promise Chains?

Mengapa Menggunakan Panggilan Balik dalam AngularJS Promise Chains Memudaratkan

Ia sering dicadangkan untuk menyediakan fungsi panggil balik kepada perkhidmatan AngularJS, seperti yang dilihat dalam coretan kod di bawah:

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens(function callbackFn(tokens) {
        $scope.tokens = tokens;
    });
});
Salin selepas log masuk

Walau bagaimanapun, amalan ini tidak digalakkan sebagai Anti-Corak. Perkhidmatan AngularJS seperti janji pengembalian $http dan melampirkan kaedah panggil balik pada kaedah .then mereka membentuk penyongsangan kawalan yang tidak diingini.

Refactoring

Untuk membetulkan isu ini, ubah suai kod seperti berikut:

app.controller('tokenCtrl', function($scope, tokenService) {
    tokenService.getTokens()
        .then(function(response) {
            $scope.tokens = response.data;
        });
});
Salin selepas log masuk

Dalam perkhidmatan modul:

app.factory('tokenService', function($http) {
    var getTokens = function() {
        return $http.get('/api/tokens');
    };

    return {
        getTokens: getTokens
    };
});
Salin selepas log masuk

Pemfaktoran semula ini menghapuskan fungsi panggil balik dan mengekalkan aliran kawalan yang diingini melalui kaedah .then.

Justifikasi untuk Pemfaktoran Semula

Panggilan balik seperti yang dilaksanakan dalam kod asal:

  • Halang rantaian selanjutnya pengendali kejayaan/ralat.
  • Alih kawalan ke atas pengendalian tindak balas daripada modul pemanggil kepada modul yang dipanggil.
  • Perkenalkan kerumitan janji sambil menggunakannya sebagai panggilan balik secara serentak. Paradoks ini menyebabkan kod mengelirukan.

Atas ialah kandungan terperinci Mengapa Panggilan Balik Memudaratkan dalam Rantai Janji AngularJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan