javascript - 如何在 JavaScript 的异步函数中使用 do/while 语句?

标签 javascript ecmascript-6 async-await

我有一个异步函数,用于检查表中是否已存在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/

相关文章:

javascript - 仅更改主 <li> 标签的类

javascript - 如何获得过滤后的数组元素的总和

javascript - 以编程方式导致 onBlur 在 react 中触发

c# - 在任务中进行异步/等待数据库调用?

javascript - 如何在 Node js 中编写 util.promisify 的替代函数?

JavaScript 输出 HTML

javascript - 带有 SVG 的 JS : Rotate SVG-Element around its center

javascript - 如何从数组创建一个集合并删除 JavaScript 中的原始项目

javascript - NW.js + 通天塔 : ES6 import working but not export?

Angular 4 - 处理迭代中嵌套订阅的最佳方法是什么