gpt4 book ai didi

javascript - 递归函数调用前延迟

转载 作者:行者123 更新时间:2023-12-05 02:27:12 24 4
gpt4 key购买 nike

我试图在每次递归函数调用之前设置延迟。目前,它正在返回 undefined。问题可能是递归调用的范围(在 settimeout 内然后)。我这样试过:

    function delay(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms)
});
}

const checkIfListElementIsRendered = (className) => {
delay(10).then(function (res) {
if (document.getElementsByClassName(className)[0]) {
return true;
}
return checkIfListElementIsRendered(className);
})
}

还有这个:

    const checkIfListElementIsRendered = (className) => {
if (document.getElementsByClassName(className)[0]) {
return true;
}

setTimeout(() => {
return checkIfListElementIsRendered(className);
}, 10);
}

感谢任何帮助!

最佳答案

需要将checkIfListElementIsRendered转为async/await语法,awaitdelay checkIfListElementIsRendered 方法,也改为返回 true 将其转换为 promise 以始终返回 promise

在外部调用checkIfListElementIsRendered方法时,需要通过awaitthen回调来解析。

function delay(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms)
});
}

const checkIfListElementIsRendered = async (className) => {
await delay(10)
if (document.getElementsByClassName(className)[0]) {
return Promise.resolve(true);
}
return await checkIfListElementIsRendered(className);
}

关于javascript - 递归函数调用前延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73357912/

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