我有一个异步函数,用于检查表中是否已存在id
。
async function generateIdentifier () {
try {
let exists;
let id;
do {
id = someRandomStringGenerator();
const email = await Database.find({id});
if (email.length > 0) {
exists = true;
} else {
exists = false;
}
} while (exists);
return id;
} catch (e) {
throw e;
}
}
使用上面的代码,find 方法将返回一个数组。如果数组为空,则表示未找到 id。当找到一个 id 时,它应该生成一个新的 id,直到 id 唯一为止。
此外,是的,这虽然在性能方面是有效的,但这样做是否有更好的选择?
最佳答案
我建议您使用如下回调函数。我进行了一个 API 调用来表示您的数据库请求,并将条件置于循环中,直到字符串中包含字符 v
为止。有了它,它就会像魅力一样发挥作用。
function loadData(callback){
$.ajax({url: "https://helloacm.com/api/random/?n=10", success: function(response){
callback(response);
}});
}
function checkData(response){
if(response.includes("w")){
console.log(response, "good");
} else {
console.log(response, "bad");
loadData(checkData);
}
}
function register(){
loadData(checkData);
}
register();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
关于javascript - 如何在 JavaScript 的异步函数中使用 do/while 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52810587/