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; }); };
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}); };
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.
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.
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!