Modul nodejs async: https://github.com/caolan/async menyediakan 2 metode serupa, async.waterfall
dan async.series
.
Apa perbedaan di antara keduanya?
javascript
node.js
asynchronous
node-async
Bruce Dou
sumber
sumber
waterfall
jugaseries
mengembalikan nilai. Diharapkan bahwa apa pun hasilnya akan digunakan dalam parameter callback opsional.Kedua fungsi meneruskan nilai kembali, dari setiap fungsi ke fungsi berikutnya, kemudian setelah selesai akan memanggil callback utama, meneruskan kesalahannya, jika terjadi kesalahan.
Perbedaannya adalah
async.series()
, setelah rangkaian selesai, akan meneruskan semua hasil ke callback utama.async.waterfall()
akan meneruskan ke callback utama hanya hasil dari fungsi terakhir yang dipanggil.sumber
async.waterfall()
berurusan dengan sebuahaction that relies on the previous outcome
.async.series()
berurusan dengan tindakan yang diinginkansee all the result at the end
sumber
Saya menganggap async.waterfall berbahaya, karena sulit untuk refactor setelah ditulis dan juga rawan kesalahan karena jika Anda memberikan lebih banyak argumen, fungsi lain banyak mengubah tanda tangan.
Saya sangat merekomendasikan
async.autoInject
sebagai alternatif yang bagus, untuk air terjun async. https://caolan.github.io/async/autoInject.js.htmlJika Anda memilih untuk menggunakan async.waterfall, saya sarankan untuk menyimpan semuanya dalam satu objek, sehingga fungsi Anda tidak harus mengubah panjang / tanda tangan, seperti:
peringatan: ini adalah pola yang buruk
jangan lakukan dengan cara di atas. Ini adalah pola yang jauh lebih baik untuk digunakan:
dengan cara itu Anda tidak akan menarik rambut Anda mencoba untuk memastikan argumen fungsi memiliki panjang yang tepat. Fungsi pertama hanya menerima satu arg - callback. Semua yang tersisa harus menerima dua argumen - nilai dan callback. Tetap berpegang pada polanya dan Anda akan tetap waras!
sumber