繁体   English   中英

我如何等待socketIO事件的返回?

[英]How can I wait for return of socketIO event?

我必须返回debugReturn事件的OK验证函数,但我不知道如何执行,因为它是异步的。 我需要一种将true或false返回到validate函数的方法。 对不起,我的英语:S

$('.num-pad').keyboard({
    layout: 'num',
    validate: function(keyboard, value, isClosing) {
        var data = $(keyboard['el']).attr('id').split('_');
        var var_index = data[data.length - 1];
        var var_name = data[0];
        for (var i = 1; i < data.length - 1; i++) {
            var_name += '_';
            var_name += data[i];
        }
        socket.emit('debugVar', {
            var_value: value,
            var_name: var_name ,
            var_index: var_index 
        });

        socket.on('debugReturn', function(msg) {
            if (msg == 1) {
                $('.ui-keyboard input').css('box-shadow', 'inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)');
                return true;
            } else {
                $('.ui-keyboard input').css('box-shadow', 'inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(255,0,0,.6)');
                return false;
            }

        });
    }
});

我从验证功能之外解决了处理键盘的问题

$('.num-pad').keyboard({
  layout: 'num',
  validate: function(keyboard, value, isClosing) {
      var data = $(keyboard['el']).attr('id').split('_');
      var var_index = data[data.length - 1];
      var var_name = data[0];
      for (var i = 1; i < data.length - 1; i++) {
          var_name += '_';
          var_name += data[i];
      }
      socket.emit('debugVar', {
        var_value: value,
        var_name: var_name ,
        var_index: var_index 
      });
      kb = keyboard;
  }
});

然后 ...

socket.on('debugReturn', function(msg) {
    if (msg == 1) {
        $('.ui-keyboard input').css('box-shadow', 'inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)');
        kb.options.validate = true;
        kb.accept();
        kb.options.validate: function(keyboard, value, isClosing) {
          var data = $(keyboard['el']).attr('id').split('_');
          var var_index = data[data.length - 1];
          var var_name = data[0];
          for (var i = 1; i < data.length - 1; i++) {
              var_name += '_';
              var_name += data[i];
          }
          socket.emit('debugVar', {
            var_value: value,
            var_name: var_name ,
            var_index: var_index 
         });
         kb = keyboard;;
    } else {
        $('.ui-keyboard input').css('box-shadow', 'inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(255,0,0,.6)');
    }

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM