1

Я пишу гибридное приложение платформы Telerik. Я хочу написать функцию, которая возвращает число из облака Everlive. Вот мой код.JavaScript SDK возвращает форму данных вложенную функцию

function getSector(){ 
    var result = 0; 
    var data = el.data('csector'); 
    data.get() 
    .then(function (data) { 
      var obj = JSON.parse(JSON.stringify(data)); 
      //alert(obj.result[0].current); 
      result = obj.result[0].current; 
     }, 
     function (error) { 
      alert(JSON.stringify(error)); 
     }); 
    return result;} 

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

+1

Его асинхронный вызов, вы не можете вернуть значение из async, поскольку его целью является отсутствие выполнения кода блокировки, а также обработка данных в обратном вызове '. Then'. – vinayakj

+0

Предупреждения работают, потому что код застревает (блокируется) там. – vinayakj

+0

Возможный дубликат [Невозможно разобрать и вернуть строку ajax переменной jquery] (http://stackoverflow.com/questions/31360437/cant-parse-and-return-ajax-string-to-jquery-variable) – vinayakj

ответ

1

Если вы вызываете вашу функцию из где-то в JS и других, чем в разметке непосредственно (связывание данных), то вам может понадобиться для выполнения обещаний через JQuery, угловой или какой-либо другой библиотеки. Вот реализация jQuery: https://api.jquery.com/promise/

Если вы вызываете функцию посредством привязки данных, ваша функция должна изменить свойство на вашей модели, а затем ваша разметка должна быть привязана к этому свойству. Без дополнительной информации о вашем проекте трудно ответить окончательно.

Смежные вопросы