2015-12-01 2 views
1

Я новичок в JavaScript Nativescript. Я пытаюсь получить результат с помощью HTTP, и я получаю результат с помощью предупреждения, но когда я вызываю эту функцию, он возвращает пустую строку. Я пробую другой метод, но результат тоже тот же. Разве я не пишу неправильный код?Call HTTP-функция получает пустую строку, но успех получает контент

модель-вид:

function GetResult(url) { 
      var viewModel = new ObservableArray([]); 

      viewModel.abc = function() { 

       http.getString(url).then(function (response) { 
         return response; 
       }, function (e) { 
         return e; 
       }); 

      }; 

      return viewModel 
     } 
module.exports = GetResult; 

Pageload JS:

var List = new viewModel("http://localhost/test/"); 
function onPageLoaded(args) { 
    var page = args.object; 
    dialogs.alert(List.abc()); 
    page.bindingContext = load; 
} 
exports.onPageLoaded = onPageLoaded; 

ответ

1

код не является неправильным. Когда вы вызываете функцию напрямую, она возвращает только переменную viewModel. Запрос HTTP вы послали асинхронно, и как только он закончит это будет возвращать ответ на функцию обратного вызова:

  function (response) { 
        return response; 
     } 

Ты ничего плохого не делаешь, вы просто не думаете асинхронно. Не беспокойтесь, вы в конце концов привыкнете к этому.

+0

viewModel.abc = функция() { возврата http.getString (URL) .then (функция (ответ) { возврата ответа; }, функция (е) { возврата е; }). Затем (функция (данные) { данные возврата; }); }; Не обратный вызов использует функцию? – askingPPl

+0

Обратный вызов - это функция, которую вы предоставили в качестве первого параметра в функции .then() –

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