首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构.catch(handleError)抛出UnhandledPromiseRejectionWarning

重构.catch(handleError)抛出UnhandledPromiseRejectionWarning
EN

Stack Overflow用户
提问于 2020-05-13 21:50:47
回答 3查看 26关注 0票数 0

我正在尝试重构catch块,因为这对于多个请求来说是很常见的。但是它抛出了UnhandledPromiseRejectionWarning: ReferenceError: next没有定义。

这是一个代码片段。

代码语言:javascript
复制
user.save()
    .then(user => {

    })
    .catch(handleError)

const handleError = err => {
    if (!err.statusCode) {
        err.statusCode = 500;
    }
    next(err)
}

但是,如果我这样做,它就能正常工作

代码语言:javascript
复制
user.save()
    .then(user => {

    })
    .catch(err => {
        if (!err.statusCode) {
            err.statusCode = 500;
        }
        next(err)
    })
EN

回答 3

Stack Overflow用户

发布于 2020-05-13 21:56:13

const未被提升,因此您需要将其移至使用位置上方:

代码语言:javascript
复制
const errHandler = console.log("Hello world");
new Promise((res, reject) => reject()).then(errHandler);

而不是:

代码语言:javascript
复制
new Promise((res, reject) => reject()).then(errHandler);
const errHandler = console.log("Hello world");

票数 2
EN

Stack Overflow用户

发布于 2020-05-13 21:58:40

我认为

代码语言:javascript
复制
user.save().then(user => {})
    .catch(err => handleError(err))
...
票数 0
EN

Stack Overflow用户

发布于 2020-05-13 22:04:01

您可以将您的处理程序放在上面,如下所示

代码语言:javascript
复制
const handleError = err => {
    if (!err.statusCode) {
        err.statusCode = 500;
    }
    next(err)
}

user.save()
    .then(user => {

    })
    .catch(handleError)

或者,您可以像这样重写处理程序

代码语言:javascript
复制
function handleError(err) {
    if (!err.statusCode) {
        err.statusCode = 500;
    }
    next(err)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61776452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档