【问题标题】:Check image url using javascript async/await使用 javascript async/await 检查图像 url
【发布时间】:2020-08-04 02:35:21
【问题描述】:

我在这里看到过多个这样的问题,但所有问题都只是使用alertconsole.log 作为结果,而我遇到了不同的问题。

我正在尝试使用async/awaitaxios 验证图片网址是否有效。

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.logs 来检查结果。问题是我从来没有在异步函数中看到这些日志,console.log(imageValid) 总是在控制台中打印一个Promise 对象。无法弄清楚如何以正确的方式实现这一点。

【问题讨论】:

    标签: javascript async-await axios es6-promise


    【解决方案1】:

    您不能在某些功能中使用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();
    

    【讨论】:

    • 最大的提示是You cant use async-await in some function. 虽然我不知道为什么!
    【解决方案2】:

    这是我的解决方案:

    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;
      }
    })();
    

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多