jQuery 带有 summernote 提示的承诺
jQuery promises with summernote hints
我正在努力从 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;
}
}
});
});
如何在不摔倒的情况下让 async 工作?我相信它与承诺有关但不确定。
不要打电话给 callback
。 users
需要从 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;
}
}
});
});
我正在努力从 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;
}
}
});
});
如何在不摔倒的情况下让 async 工作?我相信它与承诺有关但不确定。
不要打电话给 callback
。 users
需要从 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;
}
}
});
});