【发布时间】:2014-07-26 15:45:03
【问题描述】:
我必须返回 debugReturn 事件的验证函数 de 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;
}
});
}
});
【问题讨论】:
-
您不要将同步返回与异步函数一起使用。您应该使用回调(真)或回调(假)。问题是键盘小部件可能无法接受异步调用作为验证功能。
-
我知道“返回”对于异步函数是没有用的。我在考虑如何使用回调来摆脱麻烦,但我不明白如何。我一直在搜索允许延迟函数执行的库,但我没有找到任何可以说服我的东西。
-
这是插件吗? github.com/Mottie/Keyboard 因为作者的待办事项列表中有“等待请求”。也许你应该在那里创建一个问题。
-
是的,这是我正在使用的插件。如何查看待办事项列表?
-
没有,但自述文件中有一小部分。你熟悉 github 吗?每个项目都有一个问题页面,您可以在其中留下反馈或建议功能。但最好的办法是查看未缩小的源代码并尝试自己增强插件,然后成为代码库的贡献者。在这种情况下,您需要实现的功能需要回调知识,也许还有 jQuery 承诺。
标签: javascript callback socket.io synchronous