【发布时间】:2021-09-29 14:30:15
【问题描述】:
我的应用中目前有以下代码:
import {getTestData,getUserData} from "./js/apiInteractorModule.js";
const TEST_NAMES = ['CM10'];
var testData = {};
function populateTestData(){
return axios({
method: 'post',
url: '/get-session-cookie'
}).then(response => { //Get decrypted session data
getUserData(response.data.uuid,response.data.id_token).then(response => { //Get user data w/ decrypted session data (TODO: Integrate w/ data)
for (let i = 0; i < TEST_NAMES.length; i++){
getTestData(TEST_NAMES[i]).then(response => {
testData[TEST_NAMES[i]] = [];
for (var key in response.json){ //Creates {NAME: [{x: time, y: value}]} TODO: Adjust w/ user data
testData[TEST_NAMES[i]].push({
x: response.json[key].time,
y: response.json[key].value
});
}
});
}
})
return response;
}).catch(error => {
console.log(error);
return error;
});
}
getUserData 和 getTestData 与我的外部 API 交互的地方。 getTestData 端点返回类似
{success: True/False, json: {String key: {time: UNIX time, value: float}}}
运行后,我希望 testData 看起来像
{CM10: [{x: time, y: value}]} API 调用中收到的每个值和时间。
运行时
populateTestData().then(response => {
console.log(testData);
});
不过,console.log 打印出来的不是预期的字典,而是
console.log(testData[CM10]) 也打印 undefined,testData.values 也是空的。
只是为了对比,当我在函数之外初始化 testData 时
var testData = {"CM10": 10}
然后运行同样的代码,输出是
运行console.log(testData["CM10"])" 打印10
为什么会这样,我能做些什么来解决它?
【问题讨论】:
标签: javascript dictionary axios