La source de données à distance ajax typeahead.js ne fonctionne qu’avec les requêtes ajax synchrones

Typeahead.js fonctionne uniquement avec une source de données ajax personnalisée personnalisée lors de la soumission de la demande de manière synchrone et non asynchrone. Lorsque soumis de manière asynchrone (async: true), mon script et la fonction TABoards () personnalisée sont exécutés avant que la fonction cb () ne puisse propager la liste des résultats. Mon code ci-dessous fonctionne parfaitement et produit des résultats à partir de deux sources de données: une source de données ajax distante et une source de données “statique” qui génère toujours un seul résultat “Afficher tous les résultats pour [requête]”. Toutefois, le code résultant génère également la remarque suivante dans la console JavaScript du navigateur: “Synchronous XMLHttpRequest sur le thread principal est obsolète en raison de ses effets néfastes sur l’expérience de l’utilisateur final.” Ajout de “.done (function () {cb (response)});” n’a pas marché.

Comment puis-je réécrire ce code pour qu’il fonctionne exactement de la même manière, sauf que le navigateur ne produise pas d’avis?

var TABoards = function(q, cb){ $.ajax({ dataType: "json", async: false, url: '/typeahead.php?q='+q+'&type=boards', success: function(response){ cb(response); } }); } $('#hdrSrchQ').typeahead({ highlight: true, hint: false, minLength: 3 }, { name: 'ta-boards', displayKey: 'title', source: TABoards, templates: { header: '

Boards

', suggestion: function(data){ return '' + data.title + ' - ' + data.name + ''; } } },{ name: 'ta-viewall', displayKey: 'value', source: function(q, cb){ cb([{'value': q}]); }, templates: { suggestion: function(data) { return 'View all results for ' + data.value + '...'; } } });