É possível definir async: false
ao chamar $.getJSON()
para que a chamada seja bloqueada em vez de ser assíncrona?
105
É possível definir async: false
ao chamar $.getJSON()
para que a chamada seja bloqueada em vez de ser assíncrona?
Respostas:
Você precisa fazer a chamada usando
$.ajax()
para ele de forma síncrona, assim:Isso corresponderia ao uso atual
$.getJSON()
desta forma:fonte
type: 'POST'
opção para transformá-lo em um post - embora você não queira usar aasync: false
menos que realmente precise - ele bloqueará a IU.Ambas as respostas estão erradas. Você pode. Você precisa ligar
antes de sua chamada json ajax. E você pode definir como verdadeiro após a retomada da chamada (se houver outros usos de ajax na página, se você quiser que sejam assíncronos)
fonte
$.ajax
(e wrappers abreviados subsequentes$.getJSON
, ou seja$.get
, etc.) para serem síncronas. Além disso, a documentação sugere até mesmo não usar isso: "Descrição: Definir valores padrão para solicitações futuras do Ajax. Seu uso não é recomendado."Eu acho que vocês dois estão certos. A última resposta funciona bem, mas é como definir uma opção global, então você deve fazer o seguinte:
fonte
No meu caso, Jay D está certo. Eu tenho que adicionar isso antes da chamada.
Em meu código anterior, eu tenho este:
Funciona encontrar. Então eu mudo para
O alerta é indefinido.
Se eu adicionar essas três linhas, o alerta mostra os dados novamente.
fonte
Se você só precisa
await
evitar o código de aninhamento:fonte
Eu não acho que você pode definir essa opção lá. Você terá que usar jQuery.ajax () com os parâmetros apropriados (basicamente getJSON apenas envolve essa chamada em uma API mais fácil, também).
fonte
Role o seu próprio, por exemplo
fonte