Javascript can';t使用setTimeout保留索引

Javascript can';t使用setTimeout保留索引,javascript,jquery,Javascript,Jquery,我正在开发一个新的JavaScript功能,其中我有一个媒体集合(img、视频、txt…),用户可以添加一个新媒体,一旦媒体添加到集合中,就会向服务器发送一个新的异步请求,以检查添加的媒体缩略图是否已经存在。如果是,缩略图将添加到集合中的媒体元素。 这是检查缩略图是否存在的代码: if (!img.width) { setTimeout(_.bind(function () { if (img.width) { this.$("mySelector").first().r

我正在开发一个新的JavaScript功能,其中我有一个媒体集合(img、视频、txt…),用户可以添加一个新媒体,一旦媒体添加到集合中,就会向服务器发送一个新的异步请求,以检查添加的媒体缩略图是否已经存在。如果是,缩略图将添加到集合中的媒体元素。 这是检查缩略图是否存在的代码:

if (!img.width) {
  setTimeout(_.bind(function () {
    if (img.width) {
      this.$("mySelector").first().removeClass("nocover ").css('background-image', 'url('url of thumbnail');
    }
  }, this), 15000);
}
我的问题是如何为其检查请求被发送到服务器的元素保留索引,因为这是一个异步函数,有时在处理缩略图检查请求时,用户可以添加一个新的媒体元素,然后将缩略图添加到错误的元素。因为我引用新元素的唯一方法是:
这是。$(“mySelector”).first()

设置超时时,可以将元素绑定到函数。这可以确保在调用回调时,为其提供与绑定的参数相同的参数

if (!img.width) {
  setTimeout((function ($elem) {
    if (img.width) {
      $elem.removeClass("nocover ").css('background-image', 'url(url of thumbnail)');
    }
  }).bind(this, this.$("mySelector").first()), 15000);
}