CustomElementRegistry.whenDefined() - Web APIs 编辑
The whenDefined()
method of the CustomElementRegistry
interface returns a Promise
that resolves when the named element is defined.
Syntax
customElements.whenDefined(name): Promise<CustomElementConstructor>;
Parameters
- name
- Custom element name.
Return value
A Promise
that will be fulfilled with the custom element's constructor when a custom element becomes defined with the given name. (If such a custom element is already defined, the returned promise will be immediately fulfilled.)
Exceptions
Exception | Description |
---|---|
SyntaxError | If the provided name is not a valid custom element name, the promise rejects with a SyntaxError . |
Examples
This example uses whenDefined()
to detect when the custom elements that make up a menu are defined. The menu displays placeholder content until the actual menu content is ready to display.
<nav id="menu-container">
<div class="menu-placeholder">Loading...</div>
<nav-menu>
<menu-item>Item 1</menu-item>
<menu-item>Item 2</menu-item>
...
<menu-item>Item N</menu-item>
</nav-menu>
</nav>
const container = document.getElementById('menu-container');
const placeholder = container.querySelector('.menu-placeholder');
// Fetch all the children of menu that are not yet defined.
const undefinedElements = container.querySelectorAll(':not(:defined)');
const promises = [...undefinedElements].map(
button => customElements.whenDefined(button.localName)
);
// Wait for all the children to be upgraded,
// then remove the placeholder.
await Promise.all(promises);
container.removeChild(placeholder);
Specifications
Specification | Status | Comment |
---|---|---|
HTML Living Standard The definition of 'customElements.whenDefined()' in that specification. | Living Standard | Initial definition. |
Browser compatibility
BCD tables only load in the browser
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论