@yarikus

Как получить response из асинхронной функции?

function AppCreate(data) {
  window.WebViewJavascriptBridge.callHandler('create', data, function(response) {
    return response
  })
}


Собственно как получить response по вызову AppCreate()?
  • Вопрос задан
  • 2556 просмотров
Решения вопроса 1
benbor
@benbor
Помог ответ - не забудь лайкнуть
Ну, самое бональное, использовать callback.
function AppCreate(data, callback) {
  window.WebViewJavascriptBridge.callHandler('create', data, function(response) {
    callback(response);
    return response;
  })
}
AppCreate(data, function(response){
  // здесь что-то делать с response
});

Но так у Вас скоро начнется Callback Hall , поэтому придумали такую няшную либу как Q (provises)
https://github.com/kriskowal/q
UPD:
function AppCreate(data) {
     var deferred = Q.defer();
      window.WebViewJavascriptBridge.callHandler('create', data, function(response) {
           deferred.resolve(data);
     });
    return response;
}

AppCreate(data).then(function(response){
  // здесь что-то делать с response
});

Отличие в том, что ваш запрос, ничего не знает о том, как его результат будут обрабатывать. Он лишь обещает вернуть данные, и возвращает их. Никаких колбеков внутрь запроса передавать не нужно
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mlnkv
@mlnkv
JavaScript Developer
Если функция асинхронная, то иначе, как через колбеки, получить значение у вас не получится, а промисес - это тоже своего рода колбеки, только реализованные более удобным способом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы