Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript变量未更新_Javascript - Fatal编程技术网

Javascript变量未更新

Javascript变量未更新,javascript,Javascript,这是我的密码 var isInput = false; app.post('/webhook', function (req, res) { var data = req.body; if (data.object === 'page') { data.entry.forEach(function(entry) { var pageID = entry.id; var timeOfEvent = entry.ti

这是我的密码

var isInput = false; 

app.post('/webhook', function (req, res) {
    var data = req.body;

      if (data.object === 'page') {

        data.entry.forEach(function(entry) {
          var pageID = entry.id;
          var timeOfEvent = entry.time;
      entry.messaging.forEach(function(event) {
        if (event.message) {
          receivedMessage(event);
        } else if(event.postback){
          receivedPostback(event);
        }
        else {
          console.log("Webhook received unknown event: ", event);
        }
      });
    });

    res.sendStatus(200);
  }
});

function receivedMessage(event) {
  var senderID = event.sender.id;
  var recipientID = event.recipient.id;
  var timeOfMessage = event.timestamp;
  var message = event.message;

  console.log("Received message for user %d and page %d at %d with message:", 
    senderID, recipientID, timeOfMessage);
  console.log(JSON.stringify(message));

  var messageId = message.mid;
  var messageText = message.text;
  var messageAttachments = message.attachments;

  if (messageText) {

    switch (messageText) {

      case 'Vote': 
        delayText(senderID, "Send your message ", 1000); 
        isInput = true; 
        break; 

      default:
        if(isInput){
          token = messageText; 
          sendTextMessage(senderID, "token: " + token)
          isInput = false; 
        } else {
         sendTextMessage(senderID, "isInput: " + isInput)
        }
        break; 
    }
  } 
}
我想执行

if (isInput) {
  token = messageText; 
  sendTextMessage(senderID, "token: " + token)
  isInput = false
}
在默认情况下,但它永远不起作用


正如您在上面的代码中所看到的,如果用户发送消息“投票”,我的聊天机器人将回复“发送您的消息”,并将isInput更新为true。但当我再次向机器人发送消息时,它会说,
isInput
为false。我应该如何让
isInput
更新为true

每次调用receivedMessage()方法时,它都会将isInput变量设置为false。 请尝试使用此代码

var isInput = false; 

app.post('/webhook', function (req, res) {
    var data = req.body;

      if (data.object === 'page') {

        data.entry.forEach(function(entry) {
          var pageID = entry.id;
          var timeOfEvent = entry.time;
      entry.messaging.forEach(function(event) {
        if (event.message) {
          receivedMessage(event);
        } else if(event.postback){
          receivedPostback(event);
        }
        else {
          console.log("Webhook received unknown event: ", event);
        }
      });
    });

    res.sendStatus(200);
  }
});

function receivedMessage(event) {
  var senderID = event.sender.id;
  var recipientID = event.recipient.id;
  var timeOfMessage = event.timestamp;
  var message = event.message;

  console.log("Received message for user %d and page %d at %d with message:", 
    senderID, recipientID, timeOfMessage);
  console.log(JSON.stringify(message));

  var messageId = message.mid;
  var messageText = message.text;
  var messageAttachments = message.attachments;

  if (messageText) {

    switch (messageText) {

      case 'Vote': 
        delayText(senderID, "Send your message ", 1000); 
        isInput = true; 
        break; 

      default:
        if(isInput){
          token = messageText; 
          sendTextMessage(senderID, "token: " + token)
          isInput = false; 
        } else {
         sendTextMessage(senderID, "isInput: " + isInput)
        }
        break; 
    }
  } 
}

此代码永远不会执行,因为
isInput
总是
false
。请看switch语句上面的代码

...

isInput = false; // this is always reseting isInput to false

...

if (isInput) {
  token = messageText; 
  sendTextMessage(senderID, "token: " + token)
  isInput = false; 
}