Jquery Javascript возвращаемое значение

0
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. Проблема в том, что мне нужно вернуть логическое ПОСЛЕ асинхронного вызова.

  • 1
    Возможный дубликат Как вернуть ответ от вызова AJAX?
  • 0
    Вы почти у цели. Вам просто нужно вернуть обещание из функции, а затем вызвать его как myapp.Calc.FirstOrder_Tap_canExecute().then(function(enabled) { ...}); , Узнайте больше о .then : api.jquery.com/deferred.then
Показать ещё 1 комментарий
Теги:

1 ответ

2

Идея обещаний - обрабатывать асинхронные задачи.

Я предполагаю, что 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
});
  • 0
    Я понимаю, что вы имеете ввиду! Я использую MS LightSwitch, а FirstOrder_Tap - объект кнопки. Если бы я должен был поставить «вернуть ложь»; как единственный оператор в функции canExecute, кнопка отключена. Я не понимаю, почему ваше редактирование не работает, но кнопка активна :(
  • 0
    @borkith: Если вы подразумеваете, что myapp.Calc.SkipOrder_Tap_canExecute должно быть синхронной функцией, это просто не сработает.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню