这是一个远景,但是我想知道是否在javascript或node.js中存在诸如C++ std::bind之类的东西?这是我觉得需要绑定(bind)的示例:

var writeResponse = function(response, result) {
    response.write(JSON.stringify(result));
    response.end();
}


app.get('/sites', function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    dbaccess.exec(query, function(result) {
        res.write(JSON.stringify(result));
        res.end();
    });
});

与其将回调传递给dbaccesss.exec,不如传递一个带有一个参数的函数指针。在C++中,我可以通过以下代码:
std::bind(writeResponse, res)

这将导致一个函数接受一个参数(在我的情况下为“结果”),我可以通过该参数而不是匿名回调。
现在,我正在为我的快速应用程序中的每条路线复制匿名函数中的所有代码。

最佳答案

虽然它存在,但我更倾向于通过闭包来实现:

function writeResponse(res) {

    return function(result) {
        res.write(JSON.stringify(result));
        res.end();
    };
}
// and then...
dbaccess.exec(query, writeResponse(res));

10-05 20:50
查看更多