componentWillMount(){
setTimeout(()=>{
alert(1);
},100)
}
componentDidMount(){
setTimeout(()=>{
alert(2);
},100)
}
Dua fungsi kitaran hayat dalam komponen mempunyai operasi tak segerak Adakah perintah pelaksanaan benar-benar mengikut susunan kitaran pengisytiharan, iaitu pertama 1 dan kemudian 2 Atau adakah anda tidak pasti sama ada perintah pelaksanaan adalah berdasarkan susunan sisipan ke dalam baris gilir mesej? Masalahnya boleh difahami sebagai mengandaikan bahawa masa pemulangan hasil tak segerak bagi componentWillMount adalah sangat panjang, dan masa pemulangan hasil tak segerak bagi componentDidMount adalah sangat singkat Adakah mungkin untuk melaksanakan hasil panggilan balik dahulu dalam componentDidMount, dan kemudian laksanakan hasil panggilan balik dalam componentWillMount
Soalan ringkasnya ialah: Dengan mengandaikan tertib pencetus dua tindakan tak segerak A dan B diketahui, bolehkah tertib kelewatan yang sama dalam A dan B boleh dijamin?
Jawapannya jelas tidak. Sebagai contoh, apabila hanya terdapat kelewatan mikrosaat antara A dan B, duasetTimeout
dengan kelewatan besar tidak boleh dijamin akan dicetuskan dalam urutan di mana
setTimeout
就不能保证按照调用setTimeout
dipanggil.Anda tidak boleh bergantung pada hubungan pemasaan yang rapuh ini untuk memastikan susunan pelaksanaan kod. Dalam Semakan Kod, jika anda menemui kod yang menggunakan perhubungan ini untuk melaksanakan fungsi seperti pemulaan data dan permintaan tak segerak, responden pasti akan memberikan pendapatnya. Untuk aliran kawalan tak segerak, Janji / hasil dan kaedah lain boleh digunakan untuk memastikan urutan pelaksanaan, yang tidak akan diterangkan di sini.