我有这个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之后显示。任何建议或建议都将不胜感激,再次感谢!
发布于 2018-09-24 02:16:00
您可以使用async/await
让它看起来像是同步的。
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://stackoverflow.com/questions/52468338
复制相似问题