Dalam pembangunan Vue, kita selalunya perlu memanggil berbilang kaedah tak segerak dalam komponen, tetapi kadangkala kaedah tak segerak ini perlu dilaksanakan mengikut tertib dan bukannya dalam mod serentak lalai. Ini memerlukan penyelesaian masalah penyegerakan kaedah Vue. Artikel ini akan memperkenalkan punca, penyelesaian dan langkah berjaga-jaga untuk masalah penyegerakan kaedah Vue.
Dalam Vue, perubahan data dalam komponen biasanya mencetuskan satu siri operasi tak segerak, seperti menghantar permintaan Ajax, mengemas kini data, dsb. . Operasi tak segerak ini dilaksanakan berdasarkan fungsi panggil balik dan dilaksanakan serentak secara lalai, tanpa tertib mahupun keutamaan.
Dalam sesetengah senario, kami perlu melaksanakan operasi tak segerak ini dalam susunan tertentu, contohnya:
Untuk mencapai keperluan ini, kita perlu melaksanakan kaedah tak segerak secara berurutan, dan di sinilah masalah penyegerakan kaedah Vue.
2.1 Menggunakan async/wait
async/wait ialah ciri baharu ES2017, yang boleh diurus dengan mudah Operasi tak segerak dan Janji, dilaksanakan berdasarkan Penjana. Dalam Vue, kami boleh menggunakan async/waiit untuk melaksanakan pelaksanaan segerak bagi kaedah tak segerak Kod sampel adalah seperti berikut:
async function getData () { const res1 = await axios.get('/api/data1') const res2 = await axios.get('/api/data2') const res3 = await axios.get('/api/data3') return [res1, res2, res3] }
Dalam kod di atas, kami menggunakan async/waiit untuk melaksanakan pelaksanaan segerak bagi tiga kaedah tak segerak. Akhirnya Mengembalikan tatasusunan yang mengandungi tiga hasil. Apabila melaksanakan kaedah getData, bahagian menunggu pertama akan dilaksanakan terlebih dahulu, dan bahagian menunggu seterusnya akan dilaksanakan selepas keputusan diperoleh, dan seterusnya.
2.2 Gunakan Promise.all()
Kaedah Promise.all() boleh melaksanakan berbilang operasi tak segerak secara selari dan mengembalikan tatasusunan selepas semua operasi selesai. Jika mana-mana operasi ini gagal, Promise.all() akan ditamatkan serta-merta dan mengembalikan Promise dengan status Ditolak. Oleh itu, kita boleh melaksanakan pelaksanaan segerak kaedah tak segerak melalui Promise.all(). Kod sampel adalah seperti berikut:
function getData () { return Promise.all([ axios.get('/api/data1'), axios.get('/api/data2'), axios.get('/api/data3') ]).then(([res1, res2, res3]) => { return [res1, res2, res3] }) }
Dalam kod di atas, kami menggunakan Promise.all() untuk melaksanakan permintaan tak segerak untuk tiga antara muka pada masa yang sama dan mengembalikan tatasusunan yang mengandungi tiga hasil selepas semua permintaan selesai . Perlu diingat bahawa dalam fungsi panggil balik Promise.all(), kami menggunakan sintaks penstrukturan ES6 untuk menyahbina hasil yang dikembalikan oleh Promise ke dalam tatasusunan, supaya hasil setiap permintaan boleh diproses dengan mudah.
Apabila melaksanakan penyegerakan kaedah Vue, anda juga perlu memberi perhatian kepada perkara berikut:
Masalah penyegerakan kaedah Vue ialah masalah biasa dalam pembangunan Vue Menyelesaikan masalah ini membolehkan kami mengawal tertib pelaksanaan kaedah tak segerak. dan keutamaan. Apabila melaksanakan penyegerakan kaedah Vue, kita perlu memberi perhatian untuk mengelakkan sarang tak segerak yang terlalu lama dan sekatan segerak, dan memilih penyelesaian yang sesuai untuk melaksanakan pelaksanaan segerak kaedah tak segerak. Saya harap pengenalan dalam artikel ini dapat membantu semua orang lebih memahami dan menyelesaikan masalah penyegerakan kaedah Vue.
Atas ialah kandungan terperinci masalah penyegerakan kaedah vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!