首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使javascript检查图像存在回调函数同步

如何使javascript检查图像存在回调函数同步
EN

Stack Overflow用户
提问于 2018-09-24 01:00:32
回答 1查看 203关注 0票数 -1

我有这个javascript函数,它可以检查某个图像路径是否存在。目前,在执行其余代码之前,函数不会完成。如果有人能推荐一种方法,让程序等到这个函数完成后再继续执行,那就太棒了。谢谢!

代码语言:javascript
复制
var flag = false;

function checkImageExists(imageUrl, callBack) {
    var imageData = new Image();
    imageData.onload = function () {
        callBack(true);
    };
    imageData.onerror = function () {
        callBack(false);
    };
    imageData.src = imageUrl;
}

checkImageExists(card.logoSrc, function (existsImage) {
    if (existsImage === true) {
        flag = true;
        console.log(card.logoSrc + ' ' + flag);
    } else {
        flag = false;
        console.log(card.logoSrc + ' ' + flag);
    }
});
console.log('flag ' + flag);

此程序的控制台日志显示图像url和正确的标志值,但这仅在由于函数未完成其执行而始终将' flag‘+ flag log执行为false之后显示。任何建议或建议都将不胜感激,再次感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-09-24 02:16:00

您可以使用async/await让它看起来像是同步的。

代码语言:javascript
复制
function checkImageExists(imageUrl) {
  return new Promise((resolve, reject) => {
    let imageData = new Image();

    imageData.onload = function () {
        resolve(true);
    };
    imageData.onerror = function () {
        reject(false);
    };

    // not really sure why you have this here, but ok
    imageData.src = imageUrl;
  });
}

async function init() {
  try {
    const isImageLoaded = await checkImageExists(card.logoSrc);
    console.log(isImageLoaded);
  } catch(error) {
    console.error(error);
  }
}

init();

请注意,这是未经测试的代码,它只是提供一个解决方案的想法。

示例:https://repl.it/repls/KhakiTreasuredTasks

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52468338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档