代码在发送响应后仍在运行

时间:2017-08-02 08:00:29

标签: javascript node.js express

我正在处理一个API,它返回自然日期自然日期,当一月有效自然日期时请求中传递5,2016 unix时间戳。但是,如果我传递无效日期,则响应应返回 null { unix : null, natural : null}。 当我传入有效日期时,它会返回预期的响应。但它运行两个代码块,即有效块和无效块。else块中的console.log("到达")也会运行并记录在控制台中。该声明应该运行吗?考虑到if块已经完成。

这是代码

var moment = require('moment');
var express = require('express');
var app = express();

app.use(express.static('public'));

app.get(/\/$/,(req,res) => {
  res.sendFile(__dirname + '/views/index.html');
});

app.get('/:date',(req,res) => {
  var date,unix,natural;
  if(moment(req.params.date, "MMMM DD, YYYY").isValid() || moment(Number(req.params.date),"X").isValid())
    {
      if(moment(req.params.date,"MMMM D, YYYY",true).isValid()){
        date = moment(req.params.date,"MMMM D, YYYY");
        console.log('set from MM');
        unix = date.format("X");
        natural = date.format("MMMM DD, YYYY");
        res.json({
        unix: unix,
        natural: natural
      });
    }
      else if(moment(Number(req.params.date),"X").isValid()){
        date = moment(Number(req.params.date),"X");
        natural = date.format("MMMM DD, YYYY");
        unix = date.format("X");
        console.log('set from X');
        res.json({
        unix: unix,
        natural: natural
      });
    }
  }
  else{
    console.log("reach");
    res.send({
      unix: null,
      natural: null
    });
  }
});

var listener = app.listen(process.env.PORT, () => {
  console.log('Your app is listening on port ' + listener.address().port);
});

链接到实时版

  

https://unix-time-.glitch.me/

0 个答案:

没有答案