2016-01-19 4 views
1

Я работаю над получением списка живых пользователей из базы данных для Summernote Hints, однако при использовании async он просто падает, однако с асинхронным отключением пользовательский интерфейс блокируется ... явно не оптимальным для UX.jQuery обещает с подсказками summernote

$(document).ready(function() 
{ 
    $('.editor').summernote({ 
     height: 300, 
     hint: { 
      match: /\[email protected](\w*)$/, 
      users: function(keyword) { 

       var result = data; 

       $.ajax({ 
        url: '/users/' + keyword, 
        type: 'get', 
        async: false //This works but freezes the UI 
       }).done(function(data) 
       { 
        result = data; //Set the result to the returned json array 
       }); 

       return result; 
      }, 
      search: function (keyword, callback) { 
       callback(this.users(keyword)); //callback must be an array 
      }, 
      content: function (item) { 
       return '@' + item; 
      } 
     } 
    }); 
}); 

Как я могу получить асинхронную работу, не падая? Я считаю, что это имеет какое-то отношение к обещаниям, но не обязательно.

ответ

3

Не звоните callback. users необходимо вызвать это из функции done.

$(document).ready(function() 
{ 
    $('.editor').summernote({ 
     height: 300, 
     hint: { 
      match: /\[email protected](\w*)$/, 
      users: function(keyword, callback) { 
       $.ajax({ 
        url: '/users/' + keyword, 
        type: 'get', 
        async: true //This works but freezes the UI 
       }).done(callback); 
      }, 
      search: function (keyword, callback) { 
       this.users(keyword, callback); //callback must be an array 
      }, 
      content: function (item) { 
       return '@' + item; 
      } 
     } 
    }); 
}); 
+0

'callback' является функцией, в вашем ответе нет ни одного. – Ian

+0

@ Я могу передать его 'done' и позволить' done' называть его. –

+0

Ах да, я пропустил обратный вызов в функции пользователей, спасибо! Работает как шарм. Я не могу принять ваш ответ еще несколько минут. – Ian

Смежные вопросы