javascript - NodeJS 将额外参数传递给回调

标签 javascript node.js callback

我是 Node.JS 的初学者,作为第一次尝试,我正在实现一个小型 url 缩短服务,它将获取带有 id 参数的请求,并在搜索 cassandra 数据库后重定向到实际的 url。 您可以在下面找到我的实现。

var reqResponse;

app.get('/r/:id', function(req, res) {
    reqResponse = res;
    conn.connect(function(err, keyspace) {
        if(err){
            throw(err);
        }
        conn.cql(cqlSelectStatement, [req.params.id], { gzip:true }, redirectCallback);
    });

});

function redirectCallback (err, results) {
    if (err != null) {
        //log
    } else {
        if (results.length > 0) {
            results.every(function(row){
                reqResponse.writeHead(config.redirectStatus, {
                    'Location': row[0].value
                });
                reqResponse.end();
                return false;
            });
        } else {
            reqResponse.send("There was a problem!");
            return false;
        }
    }
    conn.close();
    return true;
}

它工作正常,它完成了工作,但我对 reqResponse“全局”变量有一些疑问。我不喜欢那里。 有没有办法可以将“res”作为参数发送给redirectCallback函数?

谢谢!

最佳答案

是的,有:创建一个匿名函数并使用它来传递参数:

app.get('/r/:id', function(req, res) {
    conn.connect(function(err, keyspace) {
        if(err){
            throw(err);
        }
        conn.cql(cqlSelectStatement, [req.params.id], { gzip:true }, function (err, results) { redirectCallback(err, res, results); } );
    });

});

你的回调变成:

function redirectCallback (err, res, results) {

关于javascript - NodeJS 将额外参数传递给回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20397763/

相关文章:

c - [GTK]将 g_signal_connect 中的循环计数器传递给 g_callback

javascript - 如何在 Angular 4 中单击按钮时在不同窗口中显示 pdf 文件

javascript - 为什么 Chrome 让我在这个循环中声明我的变量?

javascript - 如何替换常量中的 es6 模板字符串

javascript - 使用 request-promise 在 Electron 中链接 HTTP 请求

javascript - 使用 Q 用异步调用填充数组

javascript - 返回 executeSQL 函数

mysql - 如何将参数传递给nodejs中的mysql查询回调

javascript - 带有外部 json 数据的 C3.js 分组条形图

javascript - 为什么 babel 将导入的函数调用重写为 (0, fn)(...) ?