gpt4 book ai didi

javascript - 如何在 while 循环中逻辑编码 ES6 promise

转载 作者:行者123 更新时间:2023-12-05 00:53:59 26 4
gpt4 key购买 nike

此代码调用返回 promise 的函数 (getTable()):

function getTables() {
while (mLobby.tblCount() < 4) {
getTable().then(function(response) {
mLobby.addTable(response);
}, function (error) {
console.error("getTable() finished with an error: " + error);
});
}
}

由于异步函数调用和 while 循环的正常流程的冲突,它永远不会解析(并最终因内存已满而崩溃)。我尝试通过递归调用将 while 更改为 if,但结果相同:

function getTables() {
if (mLobby.tblCount() < 4) {
getTable().then(function(response) {
mLobby.addTable(response);
getTables();
}
});
}

最佳答案

根据我的经验,在像 while 这样的同步操作中使用 Promises 不会像你想要的那样工作。

我所做的是使用 async await 来完成同样的任务。像...

 async function getTables() {
while (mLobby.tblCount() < 4) {
await getTable();
// whatever other code you need...
}
}

因此,只有在每个 getTable() 调用被解析后,while 循环才会继续按预期工作。显然,一定要测试这段代码。

这是我所说的一个非常简单的工作示例:https://codepen.io/alexmacarthur/pen/RLwWNo?editors=1011

关于javascript - 如何在 while 循环中逻辑编码 ES6 promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46177780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com