Espere até que uma função termine antes de executar o segundo JS

jimbothecoder

Estou tendo problemas com a segunda função. Ele é executado antes que haja um valor salvo em 'w'. Eu tentei setTimout (), mas não ajudou. Estou tentando implementar async / await, mas estou lutando para ver como ele se encaixaria no código abaixo:

function functionOne(){

    var s
    chrome.storage.local.get(['prm'], function(result) {
        s = result.prm;
        return s;    
    });
}


function functionTwo(){

    let w = functionOne();
    
    // second half runs after w is assigned a value (after functionOne is done running).  
    
}

Async / await é a única solução ou existe outra maneira de resolvê-lo?

ControlAltDel

async / await não é a única solução. E em qualquer caso, você vai precisar criar uma promessa na functionOne

/*async*/ function functionOne(){

    var s;
    var p = new Promise(function(success) {
      chrome.storage.local.get(['prm'], function(result) {
        s = result.prm;
        success(s);    
      });
    }
    return p;
}


function functionTwo(){

    let p = functionOne();
    p.then(function(s) {
      //...
    });
        
}

Você precisa criar uma promessa para poder retornar os resultados de chrome.log.storage. Você pode tornar a functionOne assíncrona ou não. Isso não muda nada.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

espere que o loop termine antes de executar o código

Javascript: aguarde até que uma função no primeiro arquivo js seja concluída antes de executar a função no segundo arquivo

Espere que forkjoin termine antes de executar o próximo código

Espere até que uma função termine de ser executada antes que o método de início pare

O Node.js precisa esperar que o loop termine antes de executar a função

Espere até que uma função termine

Aguarde até que a função termine de executar antes de iterar

Vue.js - espere até que a animação termine antes de atualizar um componente

Espere até que a função termine antes de continuar o principal (um encadeado)

Espere até que o usuário pare de digitar antes de executar uma pesquisa pesada no searchview

Espere até que o usuário pare de digitar antes de executar uma pesquisa pesada no searchview

Espere até que o documento abra totalmente antes de executar a macro

C # Espere que outra janela aberta feche antes de executar o resto da função

Libere os registros antes que o Lambda termine de executar

Simplesmente espere até que o processo em segundo plano termine C #

JS - Esperando que a promessa dentro da função termine antes de executar o código após a função - possível?

Espere até que o tomcat termine de iniciar

Espere até que o Tomcat termine de iniciar

Espere até que o processo termine de rodar

espere até que a chamada de função termine em jQuery

Espere que o código interno termine antes de fazer o loop

Como esperar que um alternador jQuery termine antes de executar outra função?

Como esperar que a função termine antes de executar a próxima?

Espere até que o swift for loop com solicitações de rede assíncronas termine de executar

espere que cada função Cypress () termine

Como espero que a execução de uma função termine antes de retornar um valor?

Como executar tarefas em uma taxa programada que NÃO espere pela tarefa antes dela?

Espere que o futuro termine

Espere até que o processo termine

TOP lista

quentelabel

Arquivo