如何处理异步NodeJS应用程序的错误

时间:2016-06-22 11:03:03

标签: node.js asynchronous

我一直在从PHP迁移到NodeJS,我喜欢它。例如,我使用MySQL并且运行的查询(异步事件)越多,代码就越混乱:

db.execute("SQL query", [params], (err, rows) => {
    if(err) {
        console.log("error happened");
    }
    else {
        db.execute("other query", [params], (err, rows) => {
            if(err) {
                console.log("another error happened");
            }
            else {
                console.log("success");
            }
        });
    }
});

使用我的编码样式,一个查询等于7行代码,我认为这样做太多了。 你们如何处理这种代码?你们是否使用某种全球性的错误"当任何查询失败时触发的事件,您只需在代码中假设在此之前一切正常。我在想这样的事情:

function onError() {
    console.log("an error happened");
}

db.execute("SQL query", [params], (onError, rows) => {
    db.execute("other query", [params], (onError, rows) => {
        console.log("success");
    });
});

1 个答案:

答案 0 :(得分:3)

Promises(看看ES6 Promises或者找到Bluebird包)就是答案。你只是一个接一个地链接它们和我喜欢的东西之一 - 不再是“如果(错误)”。您可以定义Catch方法,捕获错误。对于整个查询链来说,一个问题就足够了。