使用 javascript async/await 检查图像 url
Check image url using javascript async/await
我在这里看到了多个这样的问题,但所有问题都只使用 alert
或 console.log
作为结果,而我遇到了不同的问题。
我正在尝试使用 async/await
和 axios
验证图像 url 是否有效。
async function checkImageUrl(imageUrl) {
let result = false;
const promise = await axios.get(imageUrl);
promise.then(() => {
console.log('result TRUE');
result = true;
}).catch(() => {
console.log('result false');
result = false;
});
console.log(result);
return result;
}
图像 url 位于 json 数组中。我在另一个函数中使用它,如下所示:
let imageValid = false;
someJson.some((obj) => {
if (obj?.image != null) {
imageValid = checkImageUrl(obj.image);
console.log(imageValid);
if (!imageValid) return true;
}
return false;
});
if (!imageValid) {
return;
}
我用了一些 console.log
来检查结果。问题是我从来没有在异步函数中看到那些日志,并且 console.log(imageValid)
总是在控制台中打印一个 Promise
对象。无法弄清楚如何以正确的方式实现它。
您可以在某些功能中使用async-await
。您可以使用传统的 for 循环。同时你可以清理checkImageUrl
函数
function checkImageUrl(imageUrl) {
return axios
.get(imageUrl)
.then((x) => true)
.catch((x) => false);
}
async function main() {
let imageValid = false;
for (let index = 0; index < someJson.length; index++) {
const obj = someJson[index];
if (obj?.image != null) {
imageValid = await checkImageUrl(obj.image);
if (imageValid) {
break;
}
}
}
if (!imageValid) {
return;
}
}
main();
这是我的解决方案:
async function checkImageUrl(imageUrl) {
let result = false;
try {
const res = await axios.get(imageUrl);
result = true;
} catch (err) {
console.log(err);
}
console.log("result", result);
return result;
}
(async () => {
let imageValid = false;
someJson.some((obj) => {
if (obj?.image != null) {
imageValid = await checkImageUrl(obj.image);
console.log(imageValid);
if (!imageValid) return true;
}
return false;
});
if (!imageValid) {
return;
}
})();
我在这里看到了多个这样的问题,但所有问题都只使用 alert
或 console.log
作为结果,而我遇到了不同的问题。
我正在尝试使用 async/await
和 axios
验证图像 url 是否有效。
async function checkImageUrl(imageUrl) {
let result = false;
const promise = await axios.get(imageUrl);
promise.then(() => {
console.log('result TRUE');
result = true;
}).catch(() => {
console.log('result false');
result = false;
});
console.log(result);
return result;
}
图像 url 位于 json 数组中。我在另一个函数中使用它,如下所示:
let imageValid = false;
someJson.some((obj) => {
if (obj?.image != null) {
imageValid = checkImageUrl(obj.image);
console.log(imageValid);
if (!imageValid) return true;
}
return false;
});
if (!imageValid) {
return;
}
我用了一些 console.log
来检查结果。问题是我从来没有在异步函数中看到那些日志,并且 console.log(imageValid)
总是在控制台中打印一个 Promise
对象。无法弄清楚如何以正确的方式实现它。
您可以在某些功能中使用async-await
。您可以使用传统的 for 循环。同时你可以清理checkImageUrl
函数
function checkImageUrl(imageUrl) {
return axios
.get(imageUrl)
.then((x) => true)
.catch((x) => false);
}
async function main() {
let imageValid = false;
for (let index = 0; index < someJson.length; index++) {
const obj = someJson[index];
if (obj?.image != null) {
imageValid = await checkImageUrl(obj.image);
if (imageValid) {
break;
}
}
}
if (!imageValid) {
return;
}
}
main();
这是我的解决方案:
async function checkImageUrl(imageUrl) {
let result = false;
try {
const res = await axios.get(imageUrl);
result = true;
} catch (err) {
console.log(err);
}
console.log("result", result);
return result;
}
(async () => {
let imageValid = false;
someJson.some((obj) => {
if (obj?.image != null) {
imageValid = await checkImageUrl(obj.image);
console.log(imageValid);
if (!imageValid) return true;
}
return false;
});
if (!imageValid) {
return;
}
})();