我在重构我的 Node.js 应用程序时遇到问题。
考虑以下使用express的(非常假设的)示例,其中accessResource只是使用我无权更改的回调的任意函数的模拟。
var express = require('express');
var app = express();
app.get('/', function(request, response) {
accessResource(request, response, function sendResponse(err, data) {
if (err) {
return response.status(500).send({"message": err});
} else {
return response.status(200).send({"message": data});
}
});
});
app.listen(8080);
Run Code Online (Sandbox Code Playgroud)
我想将sendResponse重构为一个独立的函数,以便我最终可以将其移动到自己的模块中。
app.get('/', function(request, res) {
accessResource(request, response, sendResponse);
});
function sendResponse(err, data) {
if (err) {
return response.status(500).send({"message": err});
} else {
return response.status(200).send({"message": data});
}
}
Run Code Online (Sandbox Code Playgroud)
现在显然这不再起作用,因为响应在sendResponse范围内不可用。
似乎我必须将sendResponse包装在另一个函数中,但最重要的是,我觉得我在这里缺少一个基本概念......