承诺不能解决我期望的dom元素
我使用 mutationObserver 和 href =“ https://developer.mozilla.org/en-us/docs/web/javascript/reference/reference/global_objects/promise/promise” rel =“ nofollow noreferrer”> promise promise 为了找到一个dom element的原因 DOM变化。
const waitForElement = async (
selector
) => {
return new Promise((resolve) => {
const observer = new MutationObserver(() => {
const element = document.querySelector(selector);
console.log('found element=', element);
if (element) {
observer.disconnect();
resolve(element);
}
});
observer.observe(document, {
childList: true,
subtree: true,
});
});
});
waitForElement('button[data-test="node"]').then(el => {
console.log('button element', el);
});
我认为我现在所处的页面有几个iframe,并且具有懒惰的负载。
但是我注意到,只有在我刷新页面时,这首先是第一次起作用。
如果我在MutationObserver内检查Log condy element =
,那么我可以看到发现的元素并几次记录该元素,但结果并不能因此而解决该元素。
我期望 waitforelement
函数应每次更改DOM时找到按钮元素。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如评论中提到的,诺言只能解决一次。您可以在每次解决时创建一个新的承诺,以等待下一个承诺。使用您的代码结构,您可以等待循环中的承诺。
As mentioned in the comments, a promise only resolves once. You can create a new promise each time it resolves, to wait for the next one. With your code structure, you can await the promise in a loop.