function generate(count) {
var founded = false,
_sym = 'abcdefghijklmnopqrstuvwxyz1234567890',
str = '';
while(!founded) {
for(var i = 0; i < count; i++) {
str += _sym[parseInt(Math.random() * (_sym.length))];
}
base.getID(string, function(err, res) {
if(!res.length) {
founded = true; // How to do it?
}
});
}
return str;
}
如何使用数据库查询回调设置变量值?我该怎么办?
自从使用node.js已经有一段时间了,但是我想我可以提供帮助。
首先,在node中,您只有一个线程,应该使用回调。您的代码将发生的情况是base.getID
查询将排队等待执行,但是while
循环将毫无意义地连续作为繁忙循环运行。
您应该可以通过以下回调来解决您的问题:
function generate(count, k) {
var _sym = 'abcdefghijklmnopqrstuvwxyz1234567890',
var str = '';
for(var i = 0; i < count; i++) {
str += _sym[parseInt(Math.random() * (_sym.length))];
}
base.getID(str, function(err, res) {
if(!res.length) {
k(str) // use the continuation
} else generate(count, k) // otherwise, recurse on generate
});
}
并这样使用
generate(10, function(uniqueId){
// have a uniqueId
})
我在大约2年内没有编写任何node / js的代码,也没有进行测试,但是基本思想应该成立-不要使用繁忙的循环,而应使用回调。您可能想看看节点异步包。
问题内容: 我需要为数据库主键列生成唯一的Long ID。 我以为我可以使用 UUID.randomUUID()。getMostSignificantBits(), 但是有时它会产生一些负数,这对我来说也是个问题。 是否有可能仅从UUID生成正数长?会有数十亿个条目,因此我希望每个生成的键必须唯一。 问题答案: 之所以起作用,是因为当您按位与1进行操作时,它允许按原样传递同一位数字;当您按位与0进
问题内容: 我有一个带有String的对象,该对象具有唯一的id。(例如“ ocx7gf”或“ 67hfs8”),我需要为其提供int hascode()的实现,该实现显然是唯一的。 如何以最简单/最快的方式将字符串转换为唯一的int? 10倍 编辑-确定。我已经知道String.hashcode是可能的。但是不建议在任何地方使用。实际上’,如果不建议使用其他任何方法- 如果我的对象在集合中并且需
问题内容: 我正在使用PHP和MySQL编写脚本,并且想要获得一个唯一的ID(由字符串组成:大写字母和带数字的小写字母),例如:。我在PHP中发现了许多可以生成此类数字的函数,但我担心如何确保id唯一! 更新 :uuid很长,我的意思是这样的ID:(P5Dc)一个11个字母数字的字符。 问题答案: 一个 编程的方式 可以是: 在字段中添加一个唯一索引 在PHP中生成随机字符串 在PHP中循环(wh
问题 你想随机生成一个唯一的标识符。 解决方案 可以根据一个随机数值生成一个 Base 36 编码的字符串。 uniqueId = (length=8) -> id = "" id += Math.random().toString(36).substr(2) while id.length < length id.substr 0, length uniqueId() # =
本文向大家介绍如何使用Swift为iPhone / iPad生成设备的唯一ID?,包括了如何使用Swift为iPhone / iPad生成设备的唯一ID?的使用技巧和注意事项,需要的朋友参考一下 UDID(唯一设备标识符)-由40个十六进制字符组成的序列,用于唯一标识iOS设备。 从iOS 5开始,Apple已弃用UIDevice唯一标识符,这意味着获取唯一ID的传统方式。苹果公司删除了真正唯一的