myapp.Calc.SkipOrder_Tap_canExecute = function (screen) {
var enabledBool = new Boolean;
screen.getOrders().then(function (result) {
enabledBool = (screen.OrderPosition < result.data.length - 1);
});
return enabledBool;
};
SkipOrder_Tap - это объект кнопки в MS LightSwitch. Проблема в том, что мне нужно вернуть логическое ПОСЛЕ асинхронного вызова.
Идея обещаний - обрабатывать асинхронные задачи.
Я предполагаю, что screen.getOrders()
делает асинхронный запрос и возвращает обещание. Когда вы используете then
и передаете обратный вызов, вы получите заказы после того, как обещание будет разрешено, т.е. когда ваш обратный вызов будет передан then
.
Вы можете действовать следующим образом, используя обещания "цепочка":
myapp.Calc.FirstOrder_Tap_canExecute = function (screen) {
return screen.getOrders().then(function (result) {
return (screen.OrderPosition != 0);
});
};
myapp.Calc.FirstOrder_Tap_canExecute()
.then(function (booleanResult) {
//do whatever you need
});
myapp.Calc.SkipOrder_Tap_canExecute
должно быть синхронной функцией, это просто не сработает.
myapp.Calc.FirstOrder_Tap_canExecute().then(function(enabled) { ...});
, Узнайте больше о.then
: api.jquery.com/deferred.then