Dalam Angular 6, pembangun telah dinasihatkan supaya tidak menggunakan kod berikut:
await someFunction().then(result => { console.log(result); });
Kebimbangan bukanlah bahawa tidak ada gunanya menunggu rantai janji - selagi someFunction() mengembalikan janji, kedua-dua coretan berfungsi sama. Masalahnya terletak di tempat lain.
Kekeliruan timbul daripada mencampurkan gaya pengaturcaraan async. Fungsi Async, yang diperkenalkan pada ES2017, memperkenalkan kata kunci tunggu. Apabila menunggu digunakan dalam fungsi async, ia menjeda pelaksanaan fungsi dan menunggu janji diselesaikan. Ini memudahkan pengaturcaraan async dan menjadikannya lebih mudah untuk membaca dan memahami kod.
Sebaliknya, promise chaining ialah pendekatan lama untuk pengaturcaraan async. Ia melibatkan penggunaan .then() untuk merangkaikan pelbagai janji bersama-sama. Walaupun pendekatan ini masih sah, ia boleh mengelirukan apabila dicampur dengan menunggu.
Sebagai contoh, jika anda ingin menambah panggilan janji lain di lokasi console.log() panggil atau kembali secara bersyarat daripada fungsi , semantik menjadi tidak jelas. Bolehkah anda menggunakan await dalam panggilan balik seperti di tempat lain dalam fungsi? Adakah anda perlu mengembalikan hasil daripada panggilan balik .then()? Adakah mungkin untuk kembali dari fungsi luar?
Untuk mengelakkan komplikasi ini, disyorkan untuk berpegang pada satu gaya pengaturcaraan async, sebaik-baiknya menggunakan await untuk konsistensi. Dengan berbuat demikian, anda boleh memudahkan kod anda dan mengurangkan risiko memperkenalkan pepijat. Versi yang lebih ringkas dan bersih ialah:
const result = await someFunction(); console.log(result);
Atas ialah kandungan terperinci Adakah Menunggu Rantai Janji dalam Angular 6 adalah Bau Kod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!