Возврат обещанного значения в обратном вызове события

Я использую модуль углового перетаскивания: https://github.com/marceljuenemann/angular-drag-and-drop-lists

Я заинтересован в этом мероприятии

dnd-drop Необязательное выражение, которое вызывается при удалении элемента из списка.

Возвращаемое значение определяет дальнейшую обработку перетаскивания:

false Удаление будет отменено, и элемент не будет вставлен.

true Сообщает, что удаление разрешено, но обратный вызов dnd-drop позаботится о вставке элемента.

Внутри этого обратного вызова события я делаю запрос к своему серверу REST, чтобы узнать, можно ли отбросить элемент, и я хочу вернуть истину или ложь в зависимости от его ответа. Итак, код выглядит примерно так:

function dropCallback(){
    var value;
    $http.post('url', data)
        .then(function success(){
            value = true;
        }, function error(){
            value = false;
        });
    return value;
}

Таким образом, возвращаемое значение не определено, потому что обратные вызовы будут выполняться после получения ответа от сервера. Как мне провести рефакторинг кода для достижения этой цели?


person Ilya Nered    schedule 05.09.2016    source источник
comment
Возможно, вы захотите изучить проблемы этого проекта, связанные с этим # 168 и # 173   -  person Jack    schedule 06.09.2016


Ответы (1)


Поскольку в документации по событию ничего не говорится о том, что обещания принимаются в качестве возвращаемых значений обратного вызова, ответ будет: вы не можете.

Сделанный вами запрос будет добавлен в конец стека выполнения (поэтому он будет выполнен позже, после того, как будут выполнены все текущие задания). Это не прервет выполнение обратного вызова. Таким образом, выполнение обратного вызова просто дойдет до конца кода, и ваш обработчик ответа на запрос не повлияет на возвращаемое значение обратного вызова.

person mdziekon    schedule 05.09.2016