ما هو إصدار غير متزامن الذي تستخدمه؟
2.5.0
ما البيئة التي حدثت فيها المشكلة في (إصدار العقدة / إصدار المتصفح)
إصدار نظام التشغيل: OS X 10.12.6
إصدار العقدة: 8.4.0
إصدار المتصفح: N / A
ما الذي فعلته؟
// 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
ماذا تتوقع أن يحدث؟
next
هي دالة تكرارية
ماذا كانت النتيجة الفعلية؟
next
هو undefined
انتهى بي الأمر فقط باستخدام بناء الجملة .then().catch()
لتحقيق هدفي ولكن ما زلت أرغب في مشاركة ذلك باستخدام AsyncFunction
( ملاحظة: هذا ليس تعريف async
ولكن الأصلي AsyncFunction
ينتج عن next
) من النوع undefined
.
يتم التعامل مع وظائف async
بشكل مختلف اعتبارًا من 2.3.0 - ولا يتم تمرير رد اتصال. بدلاً من ذلك ، فقط قم بإرجاع قيمة (أو وعد). في الواقع ، في مثالك ، حتى try
/ catch
ليس ضروريًا لأن أي أخطاء يتم إلقاؤها سيتم اكتشافها بواسطة Async. يجب أن يبسط هذا الكود الخاص بك قليلاً.
// templateNames is an array of strings
async.map(templateNames, async templateName => {
const template = await utils.getFile(templateName);
...
// and so on
مستندات AsyncFunction
: http://caolan.github.io/async/global.html
قراءة هذا الجزء من المستندات بشكل أكثر وضوحًا سيكون أمرًا ذكيًا. شكرا.
في الإنصاف ، هذا الوصف ليس واضحًا على موقع المستندات ... 🙄 📜
أعتقد في الواقع أنه واضح جدًا. ألقيت نظرة خاطفة على المستندات في البداية وفقدت هذا الجزء.
التعليق الأكثر فائدة
يتم التعامل مع وظائف
async
بشكل مختلف اعتبارًا من 2.3.0 - ولا يتم تمرير رد اتصال. بدلاً من ذلك ، فقط قم بإرجاع قيمة (أو وعد). في الواقع ، في مثالك ، حتىtry
/catch
ليس ضروريًا لأن أي أخطاء يتم إلقاؤها سيتم اكتشافها بواسطة Async. يجب أن يبسط هذا الكود الخاص بك قليلاً.مستندات
AsyncFunction
: http://caolan.github.io/async/global.html