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(函数(原因){返回下一个(原因);})