javascript - 在 HTTP GET 请求中使用 If 语句时函数内变量的值不会改变
问题描述
我有一个变量叫
let idStatus = '';
我需要我的 getValues 函数返回 true,并使用此变量来确定它返回 true 还是 false。
function getValues(){
let idStatus = '';
let getValuesUrl = 'https://something.something.com/v1.0/something/1?apiKey=1234abcdefghijklmnop';
const getValuesRequest = new XMLHttpRequest();
getValuesRequest.responseType = 'json';
getValuesRequest.open('GET', getOptionValuesUrl);
getValuesRequest.send();
getValuesRequest.onreadystatechange = function () {
const response = getValuesRequest.response;
if (response) {
if (getValuesRequest.status == 200) {
console.log('Success');
if(validateIds(response)){
console.log('ID is Valid');
idStatus = true;
}
else {
console.log('ID is NOT Valid');
idStatus = false;
}
}
}
console.log(idStatus);
return idStatus;
}
function validateIds(obj) {
const data = obj['data'];
console.log(data);
let validId = '';
for (let i = 0; i < data.length; i++) {
if (data[i].id == 1) {
validId = true;
}
else {
validId = false;
}
}
console.log(validId);
return validId;
}
有效 ID 以应有的方式运行,并且 getValues 控制台记录适当的响应,当它为真或假时,但 idStatus 始终返回 null。
解决方案
在这里,我为您的代码制作了一个更简单的版本。我使用 axios 而不是 XMLHttpRequest,因为它更易于使用。
const axios = require("axios");
async function getValues(link) {
const response = await axios.get(link);
if (!response.statusCode == 200) return false;
if (response.data.some(elm => elm.id != 1)) return false;
return true;
}
// if the status isn't 200, return false;
if (!response.statusCode == 200) return false;
// if one id isn't 1, return false;
if (response.data.some(elm => elm.id != 1)) return false;
如果您想了解有关 Array.some() 的更多详细信息,请访问Array.Some()链接
推荐阅读
- sql - SQL:按地区存储类别计数器
- plot - 如何在 Gnuplot 的对数刻度中设置部分 x 轴?
- marklogic - 查询以检索与英语以外的语言相关的文档
- python - 使用熊猫,我如何在第一组列中获取数据,然后再进入一个空字段,然后再跟进更多数据?
- windows - Powershell - 使用 Get-ChildItem 获取一个简单的文件列表(包括它们的路径)
- python - 获取numpy数组中元素的索引
- python - 是否有按物品尺寸包装箱子的背包算法?
- swiftui - 如何“转发”@Published 值
- wpf - WPF 程序启动进程,但无法正常启动、加载 .NET 程序集或创建窗口
- angular - 服务初始化一次但不是第二次