У меня есть следующий код:Асинхронной функция передачи данных в функцию асинхронной
//calling AsyncFunction
var coords = LocationSerivice.getLocation();
var localStores;
setTimeout(function(){
//works
console.log(coords);
//calling async function again
localStores = LocalStoresService.getLocalStores(coords[0],coords[1]);
}, 100);
setTimeout(function(){
//doesn't work
console.log(localStores);
}, 100);
Что я пытаюсь сделать, это сначала вызвать функцию, которая возвращает Async моего местоположения. Затем, чтобы получить данные из этой функции, я устанавливаю таймаут. С полученными данными я вызываю вторую функцию Async. И снова я устанавливаю тайм-аут, чтобы получить данные из моей второй функции Async, поэтому здесь она терпит неудачу. Если я попытаюсь отобразить данные с console.log()
в блоке таймаута, то он говорит undefined
, а console.log()
- в первом тайм-аут работает.
Я попытался также увеличить время ожидания, но он просто не работает. Любые предложения, как преодолеть это?
Вам необходимо правильно передать функции обратного вызова. См. Http://blog.slaks.net/2015-01-04/async-method-patterns/ – SLaks
. Один из ваших тегов - angularjs, поэтому я бы посоветовал вам заглянуть в 'prom's http://stackoverflow.com/ вопросы/15604196/promises-in-angularjs-and-where-to-use-them – Jan