Я использую угловой модуль перетаскивания: https://github.com/marceljuenemann/angular-drag-and-drop-lists
Меня интересует это событие
dnd-drop Необязательное выражение, которое вызывается при удалении элемента в списке.
Возвращаемое значение определяет дальнейшую обработку падения:
false Отмена будет отменена, и элемент не будет вставлен.
true Сигнализирует о том, что падение разрешено, но обратный вызов dnd-drop позаботится о вставке элемента.
Внутри этого обратного вызова события я делаю запрос на мой сервер REST, чтобы увидеть, можно ли удалить элемент, и я хочу вернуть true или false на основе его ответа. Таким образом, код выглядит примерно так:
function dropCallback(){
var value;
$http.post('url', data)
.then(function success(){
value = true;
}, function error(){
value = false;
});
return value;
}
Поэтому возвращаемое значение не определено, поскольку обратные вызовы будут выполняться после получения ответа от сервера. Как мне реорганизовать мой код для достижения этой цели?
Поскольку документация о событиях ничего не говорит о том, что Обещания принимаются как возвращаемые значения обратного вызова - ответ таков: вы не можете.
Запрос, который вы сделаете, будет добавлен в конец исполняемого стека (так что он будет выполнен позже, после выполнения всех текущих заданий). Он не будет прерывать выполнение обратного вызова. Таким образом, выполнение обратного вызова достигнет конца кода, а обработчик ответа на запрос не повлияет на возвращаемое значение обратного вызова.