Да, это сработает, однако браузеры будут ограничивать (между 4-8) фактические вызовы и, таким образом, не кэшировать / предварительно загружать все нужные изображения.
Лучшим способом сделать это является вызов onload перед использованием изображение выглядит так:
function (imageUrls, index) {
var img = new Image();
img.onload = function () {
console.log('isCached: ' + isCached(imageUrls[index]));
*DoSomething..*
img.src = imageUrls[index]
}
function isCached(imgUrl) {
var img = new Image();
img.src = imgUrl;
return img.complete || (img .width + img .height) > 0;
}
Я обнаружил некоторые ошибки в исполнителе:
java.lang.UnsupportedOperationException: Datanode-side support for getVolumeBlockLocations() must also be enabled in the client configuration.
Я установил dfs.datanode.hdfs-blocks-metadata.enabled как true в hadoop-site.xml и перезапустил кластер hadoop. Наконец, это работает для меня.
Журнал ошибок исполнителя находится в каталоге: работа
cd $SPARK_HOME/work/appxxxx/xx(xx is a number)