Връща стойност на обещание при обратно извикване на събитие

Използвам ъглов модул за плъзгане и пускане: 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;
}

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


person Ilya Nered    schedule 05.09.2016    source източник
comment
Вероятно ще искате да разгледате проблемите на този проект, свързани с този #168 и #173   -  person Jack    schedule 06.09.2016


Отговори (1)


Тъй като документацията на събитието не казва нищо за приемането на Promises като върнати стойности на обратното извикване - отговорът е: не можете.

Заявката, която правите, ще бъде добавена в края на стека за изпълнение (така че ще бъде изпълнена по-късно, след като всички текущи задачи са изпълнени). Това няма да прекъсне изпълнението на обратното извикване. Така че изпълнението на обратното извикване просто ще достигне края на кода и вашият манипулатор на отговор на заявка няма да повлияе на върнатата стойност на обратното извикване.

person mdziekon    schedule 05.09.2016