如何使用node.js生成唯一ID
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的代码,也没有进行测试,但是基本思想应该成立-不要使用繁忙的循环,而应使用回调。您可能想看看节点异步包。
以上是 如何使用node.js生成唯一ID 的全部内容, 来源链接: utcz.com/qa/403426.html