2016-01-17 1 views
0

Я звоню в мой апи, используя следующее:Flux Ajax API вызовы в магазинах вернуться к родительской функции

getBall: function(){ 
    ball = xhttp({ 
     url: '/current', 
     method: 'get' 
    }).then(function(data){ 
     return data; 
    }) 

    return ball; 
} 

Проблема заключается в том, что я не могу получить доступ к data в родительской функции. Я попытался присвоить переменную ball (объект обещания), но он никогда не позволяет мне получить доступ к data.

Я хочу вернуть значение data в родительскую функцию (getBall). Каков самый чистый способ сделать это?

+0

Это обещание. Почему не 'getBall(), а затем (data =>/* ... * /)' работает? –

+0

Я попробую это – jamesdlivesinatree

ответ

1

Функция getBall, скорее всего, вышла до запрос xhttp завершен. Так что нет способа пройти data обратно в getBall. Лучшее, что вы можете сделать, это приложить дополнительные .then к ball или передать ball в качестве обещания вызывающему абоненту getBall. Вызывающий может присоединить свои собственные статьи .then.

Альтернативой является использование generators, но это и все другие методы асинхронизации, такие как обещания (или даже простые обратные вызовы), требуют мышления за пределами традиционной императивной модели.

+0

Вы абсолютно правы. он выходит из 'getBall' до завершения' xhttp'. Цель этой функции - просто вернуть данные из вызова ajax. с тем, что сказал, что это самый простой способ добиться этого ... удаление обещания? – jamesdlivesinatree

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