1

这是我的 CoffeeScript 代码:

http.createServer((req, res) ->
  if req.method is "POST"
    req.on "data", (data) ->
      queryData += data
    req.on "end", ->
      _.process req.url.substring(1), queryData, (response) ->
        res.writeHead 200,
          "Content-Type": "text/plain; charset=utf-8"
        fs.appendFile "./log", log, (err) ->
          if err
            console.log err
          else
            res.end response
  else
    res.writeHead 405,
      "Content-Type": "text/plain"
    res.end()
).listen 55385, "127.0.0.1"

这是我正在编译的内容:

http.createServer(function(req, res) {
  if (req.method === "POST") {
    req.on("data", function(data) {
      return queryData += data;
    });
    return req.on("end", function() {
      return _.process(req.url.substring(1), queryData, function(response) {
        res.writeHead(200, {
          "Content-Type": "text/plain; charset=utf-8"
        });
        return fs.appendFile("./log", log, function(err) {
          if (err) {
            return console.log(err);
          } else {
            return res.end(response);
          }
        });
      });
    });
  } else {
    res.writeHead(405, {
      "Content-Type": "text/plain"
    });
    return res.end();
  }
}).listen(55385, "127.0.0.1");

如您所见,这是多余的returns

我知道return最后一行带有 void 的咖啡脚本技巧,但是在插入了这么多 void 返回后,代码变得比编译的要大。

有什么方法可以生成有效的 Node.JS 代码而无需额外的回报?

4

2 回答 2

3

关键是回报就在那里。CoffeeScript 旨在促进函数式编程风格,您可能应该从函数中返回一些东西。接受它!

于 2013-06-02T11:33:34.857 回答
0

return在您不希望出现return语句的代码块的末尾。

queryData += data
return
于 2013-06-02T11:05:26.700 回答