Versi async apa yang Anda gunakan?
2.5.0
Di lingkungan mana masalah terjadi (Versi node/versi browser)
Versi OS: OS X 10.12.6
Versi Node: 8.4.0
Versi Peramban: T/A
Apa yang kamu lakukan?
// templateNames is an array of strings
async.map(templateNames, async (templateName, next) => {
let template;
try {
template = await utils.getFile(templateName);
} catch(err) {
next(err);
}
...
// and so on
Apa yang Anda harapkan terjadi?
next
adalah fungsi iterate
Apa hasil sebenarnya?
next
adalah undefined
Saya akhirnya hanya menggunakan sintaks .then().catch()
untuk mencapai tujuan saya tetapi masih ingin membagikannya menggunakan AsyncFunction
( CATATAN: ini bukan definisi async
tetapi AsyncFunction
Object ) menghasilkan iteratee ( next
) bertipe undefined
.
Fungsi async
diperlakukan berbeda pada 2.3.0 -- mereka tidak melewati panggilan balik. Sebagai gantinya, cukup kembalikan nilai (atau Janji). Faktanya, dalam contoh Anda, bahkan try
/ catch
tidak diperlukan karena kesalahan apa pun yang dilemparkan akan ditangkap oleh Async. Ini akan sedikit menyederhanakan kode Anda.
// templateNames is an array of strings
async.map(templateNames, async templateName => {
const template = await utils.getFile(templateName);
...
// and so on
AsyncFunction
dokumen: http://caolan.github.io/async/global.html
️ Membaca bagian dokumen itu dengan lebih jelas akan lebih cerdas. Terima kasih.
Sejujurnya, deskripsi itu tidak begitu jelas di situs dokumen...
Saya sebenarnya berpikir itu cukup jelas. Saya melirik dokumen pada awalnya dan melewatkan bagian itu.
Komentar yang paling membantu
Fungsi
async
diperlakukan berbeda pada 2.3.0 -- mereka tidak melewati panggilan balik. Sebagai gantinya, cukup kembalikan nilai (atau Janji). Faktanya, dalam contoh Anda, bahkantry
/catch
tidak diperlukan karena kesalahan apa pun yang dilemparkan akan ditangkap oleh Async. Ini akan sedikit menyederhanakan kode Anda.AsyncFunction
dokumen: http://caolan.github.io/async/global.html