У меня возникают проблемы с выяснением того, как использовать Google Geocoder Api в сочетании с другим API - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь использовать Google API, чтобы получить координаты широты / долготы, а затем передать эти координаты другому API, который ищет врачей в зависимости от местоположения.Оба APIS работают независимо друг от друга, но у меня возникают проблемы с их настройкой для совместной работы с использованием обещаний.

$(document).ready(function(){
  $("#submit").submit(function(){
    event.preventDefault();
    let newQuery = new ApiCall();
    const symptom = $("#user-input").val();
    const location = $("#user-location").val();
    let locationPromise = newQuery.locationCall(location);
    locationPromise.then(function(response){
    let locationBody = JSON.parse(response);
    },function(error){
      $('.showErrors').text(`There was an error processing your 
request: ${error.message}`);
    }).then(function(result){
    let promise = newQuery.newDataCall(symptom,locationPromise);
    promise.then(function(response){
      let body = JSON.parse(response);
      console.log(body);
      const output = parseData(body);
      const display = parseString(output);
      $(".output-field").html(display);
    }, function(error) {
      $('.showErrors').text(`There was an error processing your 
 request: ${error.message}`);
     });
   })
 });
});

Я могу консоль протоколировать оба результата API, но когда я пытаюсь передать местоположение в API лучше доктора, оно не возвращает местоположение.

1 Ответ

0 голосов
/ 25 марта 2019

Я не уверен, как работает newQuery.newDataCall(symptom, locationPromise), но я думаю, что вы неправильно используете locationPromise.Учитывая, что второй аргумент newDataCall принимает координаты местоположения, ваш код должен выглядеть примерно так:

$(document).ready(function(){
  $("#submit").submit(function(){
    event.preventDefault();
    let newQuery = new ApiCall();
    const symptom = $("#user-input").val();
    const location = $("#user-location").val();
    let locationPromise = newQuery.locationCall(location);
    locationPromise.then(function(response){
    let locationBody = JSON.parse(response);
    // return the result of the API call
      return locationBody;
    },function(error){
      $('.showErrors').text(`There was an error processing your 
request: ${error.message}`);
    }).then(function(result){
    // result === locationBody
    let promise = newQuery.newDataCall(symptom, result);
    promise.then(function(response){
      let body = JSON.parse(response);
      console.log(body);
      const output = parseData(body);
      const display = parseString(output);
      $(".output-field").html(display);
    }, function(error) {
      $('.showErrors').text(`There was an error processing your 
 request: ${error.message}`);
     });
   })
 });
});

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...