Javascript js循环异步调用
在将模型保存到数据库之前,我将生成一个唯一的id。所以我调用一个方法来生成一个随机的唯一id,然后检查该id是否可用。这是我正在使用的while循环,但它从未脱离while循环:Javascript js循环异步调用,javascript,node.js,async.js,Javascript,Node.js,Async.js,在将模型保存到数据库之前,我将生成一个唯一的id。所以我调用一个方法来生成一个随机的唯一id,然后检查该id是否可用。这是我正在使用的while循环,但它从未脱离while循环: beforeValidation: function(values, next) { var counter = 0; var slug = SlugService.generate_slug(); console.log(counter + ":" + slug); async.whilst( functio
beforeValidation: function(values, next) {
var counter = 0;
var slug = SlugService.generate_slug();
console.log(counter + ":" + slug);
async.whilst(
function () { return values.slug === undefined && counter <= 10; },
function (callback) {
counter++;
Lists.findOne({slug: slug}).exec(function(err, list) {
if (list === undefined) values.slug = slug;
slug = SlugService.generate_slug();
console.log(counter + ":" + slug);
});
},
function (err) {
console.log("err");
values.slug = slug;
}
);
next();
验证前:函数(值,下一步){
var计数器=0;
var slug=SlugService.generate_slug();
控制台日志(计数器+”:“+段塞);
异步的(
函数(){return values.slug==undefined&&counter异步函数中有不同的错误 1.)函数中没有回调函数(请参阅:) 2.)您在异步完成之前调用了sails回调 试试这个:
beforeValidation: function(values, next) {
var slug = "";
async.whilst(
function check_slug() { return values.slug === undefined },
function generate_slug(callback) {
slug = SlugService.generate_slug();
Lists.findOne({slug: slug}).exec(function(err, result) {
if (err) {
return callback(err);
}
if (result === undefined){
values.slug = slug;
}
callback();
});
},
function (err) {
if(err){
return console.log(err);
}
next();
});
}
beforeValidation: function(values, next) {
var slug = "";
async.whilst(
function check_slug() { return values.slug === undefined },
function generate_slug(callback) {
slug = SlugService.generate_slug();
Lists.findOne({slug: slug}).exec(function(err, result) {
if (err) {
return callback(err);
}
if (result === undefined){
values.slug = slug;
}
callback();
});
},
function (err) {
if(err){
return console.log(err);
}
next();
});
}