jQuery承诺与summernote提示

时间:2016-01-19 17:56:15

标签: javascript jquery ajax summernote

我正在努力从Summernote Hints的数据库中获取实时用户列表,但是当使用异步时,它只会失败,但是异步关闭会导致UI冻结...显然不是最佳用户体验

$(document).ready(function()
{
    $('.editor').summernote({
        height: 300,
        hint: {
            match: /\B@(\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;
            }
        }
    });
});

如何在不摔倒的情况下让异步工作?我相信它与承诺有关,但不确定。

1 个答案:

答案 0 :(得分:3)

请勿致电callbackusers需要从done函数调用它。

$(document).ready(function()
{
    $('.editor').summernote({
        height: 300,
        hint: {
            match: /\B@(\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;
            }
        }
    });
});