Изменить и вернуть значение из выборки - PullRequest
0 голосов
/ 01 декабря 2018

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

Я впервые использую JavaScript, поэтому потерпите меня, пожалуйста :)

function getvals(){
return fetch('http://127.0.0.1:5000/mysteps/default',
{
  method: "GET",
  headers: {
    'Accept': 'application/json',
       'Content-Type': 'application/json',
  },
})
.then((response) => response.json())
.then((responseData) => {
  return responseData;
})
.catch(error => console.warn(error));
}

Полученное значение выглядит следующим образом:

{
"mysteps": [
 {
  "destination": "Death Valley, CA, USA", 
  "duration_text": "2 hours 43 mins", 
  "id": 4, 
  "km": 249.0, 
  "origin": "Bishop, CA, USA", 
  "route_data": "[[-120.483008, 37.303716], [-120.483008, 37.303716]]"
 }, 
 {
  "destination": "merced", 
  "duration_text": "2 hours 9 mins", 
  "id": 5, 
  "km": 210.6, 
  "origin": "San Francisco, CA, USA", 
  "route_data": "[[-118.399663, 37.361368], [-118.399334, 37.36137], 
  [-118.398783, 37.361372], [-118.398282, 37.361379],...

Я создал код для редактирования данных так, как я хочу, IE Добавляю каждый маршрут друг к другу, чтобы сформировать маршрут, но я не могу его использовать:

 fetch('/mysteps/' + mysavedtrip).then(function(response) {
     response.json().then(function(data) {
     let optionHTML2 = '';

     for (let mystep of data.mysteps) {
     optionHTML2 += mystep.route_data.replace(/^\[([\s\S]*)]$/, "$1") + ', '
                              }
     optionHTML2 = optionHTML2.slice(0,-2);
     optionHTML2 = "[" + optionHTML2 + "]";
     state_select2.innerHTML = optionHTML2;
     });
   });

Я могу отобразить optionHTML2 и увидеть, что это вывод, который я хочу, но я хочу назначить optionHTML2 в качестве переменной, которая будет передавать карту в "getcoordidnates"

map.on('load', function () {
   map.addLayer({
     "id": "route",
     "type": "line",
     "source": {
        "type": "geojson",
        "data": {
        "type": "Feature",
        "properties": {},
        "geometry": {
            "type": "LineString",
            "coordinates": getcoordinates                                     
             }
         }
        },
        "layout": {
        "line-join": "round",
        "line-cap": "round"
        },
        "paint": {
        "line-color": "#888",
        "line-width": 3
       }
     });
    });

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 01 декабря 2018

Вы ничего не возвращаете в .then (), поэтому выборка не возвращает вам значение.

return fetch('/mysteps/' + mysavedtrip).then(function(response) {
  return response.json().then(function(data) {
  let optionHTML2 = '';

  for (let mystep of data.mysteps) {
    optionHTML2 += mystep.route_data.replace(/^\[([\s\S]*)]$/, "$1") + ', '
                          }
    optionHTML2 = optionHTML2.slice(0,-2);
    optionHTML2 = "[" + optionHTML2 + "]";
    state_select2.innerHTML = optionHTML2;
    return optionHTML2;
 });
});

После добавления приведенного выше кода в функцию getvals (), функциядолжен вернуть обещание со значением optionHTML2.

Таким образом, вы можете использовать его следующим образом:

getvals().then(function(optionHTML2) {
  do what you want with the optionHTML2 here.
})
...