绑定函数中包含Async/await错误
Async/await errors being swallowed in bound function
我正在运行一个使用async/await的Express应用程序。
我有两条这样的路由:
app.post('/add-item', item.bind(null, 'add'))
app.post('/remove-item', item.bind(null, 'remove'))
路由处理程序定义如下:
async function item (action, req, res, next) {
if (action === 'add') {
var result = await addItemFromDB()
res.json(result)
} else {
var result = await removeItemFromDB()
res.json(result)
}
}
因为我想避免在try/catch
中包装addItemFromDB
和removeItemFromDB
函数,所以我将其包装在辅助函数asyncRequest
中:
asyncRequest(async function item(req, res, next) {
if (action === 'add') {
var result = await addItemFromDB()
res.json(result)
} else {
var result = await removeItemFromDB()
res.json(result)
}
})
其中asyncRequest
定义为:
function asyncRequest (handler) {
return function (req, res, next) {
return handler(req, res, next).catch(next)
}
}
但是,addItemFromDB
和removeItemFromDB
中发生的所有错误都被静默地吞下。我所发现的是,当我删除.bind(null, 'add')
等一切工作如预期。
你知道为什么会这样吗?
你必须使用
app.post('/add-item', asyncRequest(item.bind(null, 'add')));
app.post('/remove-item', asyncRequest(item.bind(null, 'remove)));
可能您尝试在自定义item
函数上调用asyncRequest
,该函数接受4个参数,这不是asyncRequest
函数期望的handler
参数。
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- CKFinder 3为所选文件返回错误的URL
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 铬:“;未捕获的语法错误:意外的标记:"
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 相位器状态未捕获参考错误
- /undefined在我的404错误日志中多次出现
- Javascript未捕获语法错误意外的标识符错误
- 如何使用async/await捕获抛出的错误
- es2015中Async /await抛出错误
- 绑定函数中包含Async/await错误
- Babel抛出async/await语法错误,尽管有正确的预设/插件