具有嵌套异步和等待功能的socket.io控件执行顺序

时间:2019-03-21 13:20:21

标签: javascript node.js asynchronous socket.io async-await

在我的应用程序中,我有多个用户通过socket.event一次提交数据。 因为我需要知道每个用户是否都成功提交了他们的数据,所以我尝试确定第一个和最后一个条目。 为此,我在事件上调用了一个异步函数,该事件本身包括“ await”。

基本上,该函数在数据库中查找值,然后根据其是否存在执行某些操作。

因此,我需要在调用该函数的下一个实例之前完全执行该功能块(及其等待状态)。

但是,我发现在函数内部调用await时,该函数的下一个实例开始执行,这显然使所有事情搞砸了。

    socket.on("entries", async entries => {

        const firstEntry = await match.noEntries(mid);
        if (firstEntry) {
            //do sth
        }

        await match.submitEntries(mid, socket.pid, entries);        

    });

//FUNCTION

noEntries: async (mid) => {
    const entries = await database.query("...");
    return (entries.length == 0);
}

有什么办法可以阻止功能的下一个实例在其前任完成之前执行?

谢谢!

0 个答案:

没有答案