Приведенный ниже javascript на стороне клиента не работает, так как код завершается до заполнения cb. Заполнение cb в функции done SignalR завершается ошибкой, так как уже слишком поздно, поскольку вызов является асинхронным.
Как я могу заполнить source с помощью SignalR в ответ на ввод данных пользователем в текстовое поле ввода?
var tonameSource = function (query, cb) {
setTimeout(function () {
var prefix = $('#toname').val();
var myCBval = [];
talk.server.getpcont(prefix, ConnectionId)
.done(function (mmID) {
$.each(mmID, function () {
var myOBJ = this;
myCBval.push({
name: myOBJ.name,
ID: myOBJ.ID
});
});
}).fail(function (error) {
//
});
cb(myCBval);
}, 300)
};
$(".tt-toname").typeahead(null, {
minLength: 2,
source: tonameSource,
displayKey: 'name',
}).on('typeahead:selected', function (obj, datum) {
//$(".tt-name").typeahead('val', datum.name).typeahead('close');
});