所以我在下面有这个小代码
router.param('username', function (req, res, next, username)
{
User.findOne({username: username}).then(function (user)
{
if (!user)
{
return res.sendStatus(404);
}
req.profile = user;
return next();
}).catch(next);
});
我的问题是这部分.catch(next)
它实际上会做什么?它基本上会调用next()回调吗?它会将任何错误传递给该回调即下一个(错误)吗? 或者它会以不同的方式调用它,例如next(null,error)?
我正在尝试将上面的代码转换为async / await,那么下面的代码是否与上面的代码完全相同?
router.param('username', async function (req, res, next, username)
{
try
{
let user = await User.findOne({username: username});
if (!user)
{
return res.sendStatus(404);
}
req.profile = user;
return next();
}
catch(error)
{
next(error);
}
});
答案 0 :(得分:0)
.catch(callback)
等同于什么?
相当于.then(null, callback)
。或许你在想eta conversion,在这种情况下,它也相当于.catch(err => next(err))
。
它实际上会做什么?它基本上会调用
next()
回调吗?
是的,这就是回调的工作原理。
是否会将任何错误传递给该回调,即
next(error)
?
是的,当承诺因该错误而被拒绝时。
或者它会以不同的方式调用它,例如
next(null, error)
?
不,为什么会这样?
我正在尝试将上面的代码转换为异步/等待,我的尝试会做同样的事情吗?
是的,就.catch
而言,假设next
没有返回任何内容。