javascript - Use ajax call in autocomplete with tag in Textextjs -


i'm using textextjs autocomplete tags
in above example list simple json array.
, want value ajax function.

in case ajax call executed late. expected result disturbed. have on below code

$('#textarea') .textext({     plugins : 'tags autocomplete' }) .bind('getsuggestions', function(e, data) {     console.log(1);     search_text = (data ? data.query : '') || '';     var urll = 'url_to_get_result';      // call ajax function     var suggestionss = getsuggestions(search_text, urll);      console.log(4);     $("#output1").val();     var list = suggestionss,      textext = $(e.target).textext()[0],     query = (data ? data.query : '') || '';      $(this).trigger(         'setsuggestions',         { result : textext.itemmanager().filter(list, query) }     ); });  function getsuggestions(search_text, urll) {     console.log(2);     $.ajax({         'url': urll,         'data': {'wt':'json'},         type: 'get',         'success': function(data) {             jsonobj = [];             var count = data.count.length;             for(i=0; i<count; i++)             {                 var name = data.name.docs[i].term_suggest_ngram;                 autosuggestitem = {}                 autosuggestitem = '"'+name+'"';                 jsonobj.push(autosuggestitem);             }             var result = json.stringify(jsonobj);             availablesearch = json.parse(result);             console.log(3);             $("#output1").val(availablesearch);         },         'datatype' : 'jsonp',         'jsonp': 'json.wrf'     });     var return_val = $("#output1").val();     return return_val; } 

see console statements, these executed in sequence
1 - 2 - 4 - 3
expected behavior should be
1 - 2 - 3 - 4

can me?

asynchronous answer. code after var suggestionss = getsuggestions(search_text, urll); not wait getsuggestions method complete. lines should go .done() or .success() method of ajax

$('#textarea') .textext({     plugins : 'tags autocomplete' }) .bind('getsuggestions', function(e, data) {     console.log(1);     ......     var self = $(this); // <--- store reference of     getsuggestions(search_text, urll).done(function(){ // <--- .done() method of returned ajax invoked        console.log(3);        console.log(4);        .....        textext = $(e.target).textext()[0],        query = (data ? data.query : '') || '';         self.trigger( // <---- stored reference          'setsuggestions',           { result : textext.itemmanager().filter(list, query) }        );     }); });  function getsuggestions(search_text, urll) {   console.log(2);   return ajax({ // <---- notice ajax returned here    }); } 

Comments