Я работаю над приложением vue и написал модуль, который использует axios для вызова mySportsFeed.com для получения данных. Моя проблема в том, что из-за асинхронной природы axios я получаю обещание, а не данные. Я пробовал несколько разных способов решить эту проблему безрезультатно. Я надеюсь, что кто-то сможет указать на мою ошибку. Код:
vue.js
//====== Get Standings From MySportsFeeds Site ======================================== //
url = `https://api.mysportsfeeds.com/v1.2/pull/mlb/2018-regular/division_team_standings.json?teamstats=W,L,GB,Win %`;
mySportsFeeds.feedsData(url)
.then(function(response) {
this.standings = response;
console.log(`Standings is : ${this.standings}`);
});
// ======= end Standings ================================================ //
mySportsFeeds.js:
module.exports = {
/* jshint ignore:start */
feedsData: async function(url) {
url = encodeURI(url); // Format the URI
return (await axios.get(url, config)).data.divisionteamstandings.division;
}
И вывод консоли:
Array (6) [{…}, {…}, {…}, {…}, {…}, {…}] mySportsFeeds.js: 29
Стандарты: [объект объекта], [объект объекта], [объект объекта], [объект объекта], [объект объекта], [объект объекта] vue.js: 106
И на панели vue показано:
турнирная таблица: массив [0]
Как вы видите this.standings не определено? Любое руководство высоко ценится ...
Обновлен рабочий код:
vue.js:
//====== Get Standings From MySportsFeeds Site =========================== //
url = `https://api.mysportsfeeds.com/v1.2/pull/mlb/2018-regular/division_team_standings.json?teamstats=W,L,GB,Win %`;
/* jshint ignore:start */
// Note: We use the arrow function here because "this" is defined by where
// getStandings() is called (the vue instance) not by where it is used.
let getStandings = async () => {
this.standings = await mySportsFeeds.feedsData(url);
};
/* jshint ignore:end */
getStandings();
mySportsFeeds.js:
module.exports = {
/* jshint ignore:start */
feedsData: async function(url) {
url = encodeURI(url); // Format the URI
return (await axios.get(url, config)).data.divisionteamstandings.division;
}
/* jshint ignore:end */
};