Adakah '.then(function(a){ return a; })' Sebenarnya Melakukan Apa-apa untuk Janji?

Barbara Streisand
Lepaskan: 2024-11-10 14:58:03
asal
535 orang telah melayarinya

Does

Adakah ".then(function(a){ return a; })" Mempunyai Sebarang Kesan pada Janji?

Apabila bekerja dengan janji Bluebird dalam Rak Buku, pembangun selalunya menggunakan corak yang serupa dengan yang di bawah:

var getEvents = function(participantId) {
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true})
    .then(function(model) {
      return model;
    });
};
Salin selepas log masuk

Walau bagaimanapun, kod ini menimbulkan persoalan bagi mereka yang tidak dikenali dengan janji. Adakah fungsi kemudian mempunyai kesan yang bermakna pada keseluruhan tingkah laku kod? Bolehkah pelaksanaan berikut mencapai hasil yang sama tanpanya?

var getEvents = function(participantId) {
  return new models.Participant()
    .query({where: {id: participantId}})
    .fetch({withRelated: ['events'], require: true});
};
Salin selepas log masuk

Menyelesaikan Misteri

Inti perkara ini terletak pada parameter fungsi yang dihantar ke masa itu. Hujah ini dijangka menerima nilai pulangan janji sebelumnya dalam rantaian. Oleh itu, nampaknya pulangan a; pernyataan dalam fungsi then pada asasnya adalah no-op, kerana ia hanya melalui hujah yang diterima tidak berubah.

Mengapa Simpan Then()?

Walaupun terdapat lebihan yang jelas, fungsi then berfungsi tujuan dalam kes penggunaan tertentu. Satu contoh ialah apabila janji yang dikembalikan perlu dilayan secara berbeza di sepanjang rantaian. Sebagai contoh, ia boleh dilog, ditukar kepada JSON atau dikendalikan dengan cara tersuai. Kelebihan lain ialah fungsi kemudiannya membenarkan pengendalian ralat, walaupun ini juga boleh dicapai melalui dilakukan, bergantung pada pustaka janji yang digunakan.

Amalan Terbaik

Secara amnya, adalah dinasihatkan untuk hanya gunakan kemudian apabila ia benar-benar diperlukan. Fungsi yang tidak diperlukan boleh menambah kerumitan yang tidak diperlukan pada pangkalan kod dan meningkatkan potensi ralat. Sebagai peraturan umum, hanya masukkan kemudian apabila hasil janji yang dikembalikan atau ralat perlu diubah suai atau diproses secara eksplisit.

Atas ialah kandungan terperinci Adakah '.then(function(a){ return a; })' Sebenarnya Melakukan Apa-apa untuk Janji?. 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