Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一次动态加载图像';有空吗_Javascript_Html_Image_Amazon S3 - Fatal编程技术网

Javascript 一次动态加载图像';有空吗

Javascript 一次动态加载图像';有空吗,javascript,html,image,amazon-s3,Javascript,Html,Image,Amazon S3,好的,情况是这样的。我有一个网站,用户可以创建一个新闻提要故事。该故事向服务发送一个请求,该服务拍摄照片并将其保存到S3。在图片保存到S3之前,用户会看到他们的新闻提要故事是用一个断开的图像链接创建的 是否有可能知道该图像何时保存到S3,然后只更新UI以显示当前图像,而无需用户刷新页面,或者无需不断发送检查图像是否可用的请求 是的,你有很多方法可以做到这一点,你可以用承诺来归档,承诺让你运行同步代码。当您向服务器请求图像时,您仍然没有图像来显示它,您需要一些时间,您可以这样做(我不知道您使用什么

好的,情况是这样的。我有一个网站,用户可以创建一个新闻提要故事。该故事向服务发送一个请求,该服务拍摄照片并将其保存到S3。在图片保存到S3之前,用户会看到他们的新闻提要故事是用一个断开的图像链接创建的


是否有可能知道该图像何时保存到S3,然后只更新UI以显示当前图像,而无需用户刷新页面,或者无需不断发送检查图像是否可用的请求

是的,你有很多方法可以做到这一点,你可以用承诺来归档,承诺让你运行同步代码。当您向服务器请求图像时,您仍然没有图像来显示它,您需要一些时间,您可以这样做(我不知道您使用什么来访问服务器,但我给您举了一个axios的示例:

因为axios回报了defa的承诺

function reachServer() {
  return axios.get('url');
}

function loadImage() {
  Promise.resolve(reachServer())
    .then((image) => {
      //got the image
      myImage = image;
    })
    .catch(() => {
     // a error ocurred loading
    })
}
这是一个关于如何存档的简单案例,您还有很多其他的,您可以使用image.onload,或者ES6中的async/await,我认为Promissions和async/await是最好的选择


希望它有帮助

我建议换一种方式,使用类似于在新闻提要故事中显示图片的内容,然后发送请求将图片实际保存到S3。问题是生成图片需要一分钟,所以无论哪种方式,我都需要更新UI,因为在它呈现给用户之后。有一些基本原则l此处需要克服的障碍,因为对S3的请求无法等待对象的创建,事实上,在创建对象之前向S3请求对象实际上可以延迟该对象的可用性,方法是触发S3中的瞬态内部状态,导致S3得出结论,因为它已经验证了该对象的可用性esn不存在,在创建对象后,它可能会在短时间内继续返回404或403。您能否更具体地说明在对象可用之前通常需要多长时间,以及延迟的原因?@Michael sqlbot该服务正在拍摄Cesium.js创建的WebGL地图的屏幕截图,完全加载可能需要一段时间。在屏幕截图被记录和保存之前可能需要30秒。从第一个答案开始,经过进一步思考,我认为我需要等待S3的响应,然后向我的主服务发送通知,然后获取图像。因此,使用类似的方法,当我获取图像时会发生什么,它会返回404,因为图像不完整'还没有?我需要继续尝试吗?我对S3了解不多,但我保证您可以知道映像何时保存或不保存,当响应成功时,服务器应该向您发送响应(意味着映像保存在服务器端)您可以获取它,无需执行多次获取请求。我明白您的意思。因此,等待S3的响应,然后发送消息,然后更新UI。好的。我将尝试一些东西并返回。是的,您知道映像到达服务器的唯一方法是从服务器获得响应成功,然后映像应加载同步如我所示的ronous。任何daubt要求的:)