【问题标题】:Check if image exists in typescript检查打字稿中是否存在图像
【发布时间】:2016-10-08 18:04:31
【问题描述】:

我有一个谷歌地图实现,我使用位于在线的地图图块。但是,如果我走出平铺区域,它会抛出错误,因为它无法找到该图像。当它们不存在时,我如何制作 if 语句以返回 null?

我当时想的是这个,因为我包含了 jquery:

$.get(url)
.done(function() { 
  // exists code
  return `http://www.blablabla.com/grey-tiles/${zoom}/${coord.x}/${coord.y}.png`
}).fail(function() { 
    // not exists code
   return null;
})

但这对我不起作用这是我的组件的构造函数:

 constructor(){
this.imageMapOptions = {
  getTileUrl: (coord: ImageMapTypeCoord, zoom: number) => {
     return `http://www.blablabla.com/grey-tiles/${zoom}/${coord.x}/${coord.y}.png`
  },
   tileSize: { height: 256, width: 256 },
   maxZoom: 18,
   minZoom: 16,
   radius: 1738000,
   name: 'Beeksebergen'
 };    
}

【问题讨论】:

  • 你不能从异步调用中返回。

标签: javascript jquery typescript angular


【解决方案1】:

这样的事情可能会奏效:

var url = 'https://example.com/image.png';
return new Promise((resolve, reject) => {
  return $('<img>')
    .on('error', reject.bind(null, url))
    .on("load", resolve.bind(null, url))
    .appendTo(document.body)
    .css({ "position": "absolute", top: -9999, left: -9999 })
    .on("error load", $.fn.remove)
    .attr("src", url);
});

【讨论】:

  • 如何在构造函数中实现这个?
  • @Beginnerprogrammer 问题是你需要返回一个承诺,然后使用getTileUrl().done(url =&gt; ...)。由于检查 url 是异步的。
  • 我不明白你的意思
  • @Beginnerprogrammer 阅读:stackoverflow.com/questions/14220321/…
猜你喜欢
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2018-05-14
  • 2019-02-01
  • 1970-01-01
  • 2014-06-19
相关资源
最近更新 更多