Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gRoOvE

Encadear callbacks de um addEventListener

Recommended Posts

Quero que quando terminar de executar o $arquivos.addEventListener("change", execute automaticamente a function showResults()..esse FileReader funciona de modo assíncrono, e eu preciso que ele tenha terminado todo o processo pra dai fazer a validação que eu preciso.

 

Fiz um botão pra chamar o showResults(), mas gostaria que ele fosse automatico no callback.

 

Segue meu código abaixo:

var $arquivos = document.getElementById("arquivos");
var results = [];

$arquivos.addEventListener("change", function(){

	var files = event.target.files;
	results = [];

	for(var i=0; i < files.length; i++) {

		var file = files[i];
		var reader = new FileReader();

		reader.onload = (function(f) {
			return function(e) {
				
				results.push(e.target.result);
				
			}
			
		})(file);

		reader.readAsText(file);		
	}

});

function showResults() {
	if (results[0] === results[1]) {
		alert("Same files!")
	} else {
		alert("Different files!")		
	}
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FabianoSouza
      Preciso:
      1) Fazer a renderização de imagem
      2) Preciso que essa mesma function retorno algum valor de "status", para eu utilizar pela "function pai".
      A function funciona, renderiza a imagem quando click num botão. Mas não retorna corretamente o valor da variável msg
       
      Ilustrando:
      Essa seria a function "pai" renderImg(obj), que passa os parâmetros necessários para a function que faz o render.
       
      //chamo essa function no click de um botão (e passo parâmetros) renderImg(obj) //************************************************ // renderiza imagem selecionada no computador do usuário function renderImg(e) { var $elemImg = e.alvo , ofile = e.inpfile , reader = new FileReader() , files = e.inpfile.files // FileList object , path = e.path; var msg = '' reader.onload = (function(theFile) { return function(e) { //renderiza prévia da imagem $elemImg.setAttribute('src', e.target.result) var msg = "OK!"; }; }) (files[0]); //Read in the image file as a data URL. reader.readAsDataURL(files[0]); reader.onerror = function(event) { msg = "ERRO" } //Preciso que a variável msg retorno os status de sucesso ou erro. return msg }  
    • Por Leandro T.
      pessoal bom dia alguém poderia me ajudar com o FormValidation?
       
      "nomefuncionario": {
                  validators: {
                      
                  
                    notEmpty: {
                      message: "Nome completo do funcionário é obrigatório."
                    } , <=== este funciona normalmente
                      
                      callback: {  // agora o callback nao consigo fazer funcionar
                              message: 'este nome não é valido',
                              callback: function (input) {
                                  if (input.value = 'algum valor digitado') {
                                      return true
                                  } }},
                      
                      
                      
                  }
    • Por JoaoVituBR
      Olá. eu estou refazendo meu sistema de login só que eu me deparei com um problema e eu não estou conseguindo resolver!
      eu estou tentando fazer o callback na função de fora da pesquisa do mysql.

      Codigo:
      socket.on('auth_login', (data, callback) => { if (!data['user']) callback('user_fail'); if (!data['pass']) callback('pass_fail'); var Query = "SELECT * FROM usuarios WHERE user = ? OR email = ?" mysql.query(Query, [data['user'], data['user']], function(error, results) { if (error) return console.log(error); // [...] callback('value'); // [...] }); }); Quando eu dou callback dentro do mysql.query está dando o erro: this._callback.apply is not a function
      Obrigado!
    • Por Clayton Baroboskin
      Boa noite.
       
      tenho a seguinte função de efeito de digitação:
      function escrever(texto) {       var div = document.getElementById('message-list');           var char = texto.split('').reverse();       var typer = setInterval(       function() {         if (!char.length) return clearInterval(typer);         var next = char.pop();                         $("#message-list").scrollTop($("#message-list").prop("scrollHeight"));         div.innerHTML += next;       }, 50); }  
      Funciona perfeitamente, mas quando preciso chama-la mais de uma vez seguidamente, o texto é misturado. Tentei com callback, mas não consegui fazer funcionar.
      escrever("Texto de teste"); escrever("Outro texto de teste); Retorna:  TOeuxttroo dtee xtteos tdee teste

      Alguma idéia??
       
      Obrigado.
       
      Clayton 
    • Por gRoOvE
      Bom dia, como vocês fazem quando precisam fazer várias chamadas AJAX encadeadas? A forma mais simples de se fazer seria colocar o código da nova function no onSucess e assim recursivamente. Problema que as funções que serão chamadas já estão escritas em functions separadas(novaFuncaoAjax()), teria alguma forma de encadear assim?
      $.ajax({ method: "POST", url: "some.php", data: { name: "John", location: "Boston" } }) .sucess(function() { novaFuncaoAjax(); }); function novaFuncaoAjax(){ $.ajax({ method: "POST", url: "other.php", }) .sucess(function( msg ) { alert( "Hello World!" ); }); } No jQuery sei que existe o recurso Callbacks, já usei e sei que funciona. Porém estou usando um projeto legado que usa o framework Prototype e teria que fazer na mão este controle.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.