Javascript ES6JS承诺:什么是.catch(回调)等价物?
下面我有一个小代码Javascript ES6JS承诺:什么是.catch(回调)等价物?,javascript,ecmascript-6,promise,try-catch,es6-promise,Javascript,Ecmascript 6,Promise,Try Catch,Es6 Promise,下面我有一个小代码 router.param('username', function (req, res, next, username) { User.findOne({username: username}).then(function (user) { if (!user) { return res.sendStatus(404); } req.profile = user;
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);
}
});
.catch(回调)
等同于什么
它相当于。然后(null,callback)
。或者您可能正在考虑一个,在这种情况下,它也相当于.catch(err=>next(err))
它实际上会做什么?它基本上会调用next()
回调吗
是的,回调就是这样工作的
它是否会将任何错误传递到该回调,即next(error)
是的,当承诺因该错误而被拒绝时
或者它会以不同的方式调用它,比如next(null,error)
不,为什么会这样
我正在尝试将上述代码转换为async/await,我的尝试会做完全相同的事情吗
是的,就.catch
而言,假设next
不返回任何内容
.catch(回调)
等同于什么
它相当于。然后(null,callback)
。或者您可能正在考虑一个,在这种情况下,它也相当于.catch(err=>next(err))
它实际上会做什么?它基本上会调用next()
回调吗
是的,回调就是这样工作的
它是否会将任何错误传递到该回调,即next(error)
是的,当承诺因该错误而被拒绝时
或者它会以不同的方式调用它,比如next(null,error)
不,为什么会这样
我正在尝试将上述代码转换为async/await,我的尝试会做完全相同的事情吗
是的,就
.catch
而言,假设next
不返回任何内容。是的,您的转换是准确的next
将以错误作为其唯一参数进行调用。太好了。谢谢你向我证实这一点。你可以用推荐信来回答这个问题,我会接受你的回答as.catch(函数(原因){返回下一个(原因);})代码>是,您的转换是准确的next
将以错误作为其唯一参数进行调用。太好了。谢谢你向我证实这一点。你可以用推荐信来回答这个问题,我会接受你的回答
as.catch(函数(原因){返回下一个(原因);})代码>