您使用的是什么版本的异步?
2.5.0
问题发生在哪个环境(节点版本/浏览器版本)
操作系统版本:OS X 10.12.6
节点版本: 8.4.0
浏览器版本:不适用
你做了什么?
// 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
Object ) 导致迭代next
) 为undefined
。
自 2.3.0 起, async
函数的处理方式有所不同——它们不传递回调。 相反,只需返回一个值(或 Promise)。 事实上,在你的例子中,甚至try
/ catch
也不是必需的,因为抛出的任何错误都会被异步捕获。 这应该会稍微简化您的代码。
// templateNames is an array of strings
async.map(templateNames, async templateName => {
const template = await utils.getFile(templateName);
...
// and so on
AsyncFunction
文档: http :
🤦♂️ 更清楚地阅读文档的那部分会很聪明。 谢谢。
公平地说,该描述在文档站点上并不那么明显...... 🙄 📜
其实我觉得已经很清楚了。 我最初浏览了文档并错过了那部分。
最有用的评论
自 2.3.0 起,
async
函数的处理方式有所不同——它们不传递回调。 相反,只需返回一个值(或 Promise)。 事实上,在你的例子中,甚至try
/catch
也不是必需的,因为抛出的任何错误都会被异步捕获。 这应该会稍微简化您的代码。AsyncFunction
文档: http :