Executar vários Script em sequência [solucionado]

Boa tarde.

Estou querendo fazer um script que executa outros scripts que eu já escrevi, mas não sei qual seria o código ou função para executar isso.

Alguém poderia ajudar?

Fiz buscas e não encontrei ainda.

Desde já agradeço!

Pessoal, vou insistir um pouco aqui para ver se alguém consegue me dar uma luz sem que eu tenha que reescrever montanhas de códigos e scripts.

Eu tenho alguns scripts:

A Maioria deles é executada utilizando um clique numa das várias imagens da tela que montei:

Basicamente cada quadradinho destes corresponde a execução de um script.

O que eu preciso é executar um comando (seja em HTML, outro Script ou outra forma que eu não tenha pensado) que acione vários desses Scripts de uma só vez, com um só clique (toque na tela touch) do usuário.

Isso é possível?

Obrigado!

Ok, aparentemente é bem simples executar vários scripts após 1 único evento “onclick” do HTML.

Porém o problema que eu tenho é que está inconsistente. Às vezes eu clico e executa-se todos os Scripts. Às vezes executa os primeiros e não os últimos, e às vezes os últimos e não os primeiros.

<img onclick='mango.view.executeScript(“SC_612620”);mango.view.executeScript(“SC_826616”);mango.view.executeScript(“SC_733019”);mango.view.executeScript(“SC_486195”);mango.view.executeScript(“SC_535647”);‘style=cursor:pointer;’ alt="" title="" src=“graphics/redler - peq/transpartente.gif” width=“60” height=“60” border=“1”>

Esse é o código que eu usei (ainda falta mais scripts que quero executar de uma vez), e percebi que mesmo scripts que só utilizam variáveis internas e virtuais não foram executados corretamente, não é como o problema que eu tenho que o Modbus tem vezes que não manda/recebe a informação e falha a transmissão sem erros.

Alguém já teve problema semelhante?

AHHHHHHHHHHHHHH!!!

Finalmente…
não sei porque sempre que executo um script eu tenho que dar um intervalo, ou o ScadaBR simplesmente não executa.

O que funcionou foi isso aqui:

PS: Descobri porque o pessoal posta código como imagem…

1 curtida

@Vinizuca constrói essa solução de maneira assíncrona, para não travar a thread principal da UI no javascript.
Tem como fazer algo genérico usando Promises e setTimeout

@Vinizuca , pode testar dessa maneira, se achar interessante:

function executaScripts(scripts) {
  return promiseScript(scripts, 0);
}
function promiseScript(scripts, scriptIndex) {
  if (scriptIndex >= scripts.length) return Promise.resolve();
  return new Promise((res, rej) => {
    //mango.view.executeScripts(scripts[scriptIndex]);
    console.log(scripts[scriptIndex]);
    setTimeout(() => {
      res(promiseScript(scripts, scriptIndex + 1))
    }, 1200)
  })
}

executaScripts(["SC_1", "SC_2", "SC_3"])
  //Você também pode mostrar uma mensagem ou liberar a UI após a execução dos scripts
  .then(() => { console.log("Executado com sucesso!") })