Skip to main content

waitElement

Descrição

Cria uma promise que resolve quando o elemento é encontrado no DOM. Se o elemento não for encontrado, a promise é rejeitada, lançando um erro.

Isso é útil especialmente util quando estamos trabalhando no checkout, onde o os elementos são renderizados somente depois de algum tempo.

API

waitElement<T>(
selector: string,
options?: {
maxTime?: number = 120000,
interval?: number = 100,
}): Promise<T>

Parâmetros

ParâmetroTipoDescriçãoDefault
selectorstringSeletor CSS do elemento que queremos encontrar-
maxTimenumberTempo máximo para esperar o elemento aparecer no DOM120000
intervalnumberIntervalo de tempo entre cada tentativa de encontrar o elemento100

Exemplos

Basico

// ou import { waitElement } from 'm3-utils'
import { waitElement } from 'm3-utils/waitElement'

const element1 = await waitElement('#my-element')

Typescript

import { waitElement } from 'm3-utils/waitElement'

// se voce estiver usando typescript, voce pode passar o tipo do elemento
// que voce espera receber para ter tipos mais precisos
const link = await waitElement<HTMLAnchorElement>('#my-element')

Passando opções

import { waitElement } from 'm3-utils/waitElement'

const element1 = await waitElement('#my-element', {
timeout: 5000, // vai esperar 5 segundos antes de rejeitar a promise
interval: 1000, // vai verificar a cada 1 segundo se o elemento existe
})

const element1 = await waitElement('#my-element', {
timeout: 30000,
interval: 1,
})
// quanto menor o intervalo, mais vezes por segundo a função vai verificar se
// o elemento existe. Esse exemplo vai verificar mil vezes por segundo.
// Isso pode ser útil quando o elemento é renderizado depois de um tempo muito curto.
// Porém, é importante ter cuidado para não sobrecarregar o browser.

then / catch

import { waitElement } from 'm3-utils/waitElement'

waitElement('#my-element')
.then(element => {
console.log('elemento encontrado')
})
.catch(error => {
console.log('elemento não encontrado')
})
info

na maioria dos casos, não é necessário passar nenhum valor para os parâmetros maxTime e interval.