Javascript 如何轮询已签名的url?
我需要使用javascript轮询图像,并在找到图像后执行操作。以下是我正在使用的代码:Javascript 如何轮询已签名的url?,javascript,amazon-web-services,polling,Javascript,Amazon Web Services,Polling,我需要使用javascript轮询图像,并在找到图像后执行操作。以下是我正在使用的代码: pollUpload(file) { const stopTime = Number(new Date()) + (1000 * 60) const check = (resolve, reject) => { setTimeout(() => { const img = new Image()
pollUpload(file) {
const stopTime = Number(new Date()) + (1000 * 60)
const check = (resolve, reject) => {
setTimeout(() => {
const img = new Image()
img.onload = resolve
img.onerror = () => {
if (Number(new Date()) < stopTime) check(resolve, reject)
else reject(new Error('Timed out'))
}
img.src = file
}, 1000)
}
return new Promise(check)
},
pollUpload(文件){
const stopTime=编号(新日期())+(1000*60)
常量检查=(解析、拒绝)=>{
设置超时(()=>{
常量img=新图像()
img.onload=解析
img.onerror=()=>{
如果(编号(新日期())
这是可行的,但我遇到了一个问题,在第一次GET(404)之后,响应会被缓存,后续请求不会每次都被发送。所以它可能需要一段时间才能起作用
对此的标准解决方案只是在querystring中附加一个时间戳。然而,我的问题是:这些图像使用aws签名的URL进行保护。因此url需要与aws生成的表单完全匹配,并且不能附加任何随机信息
在这种情况下,有没有其他建议的方法可以防止缓存损坏的url?我可以礼貌地问一下,为什么要轮询已签名的url?如果你能解释你的情况,我们可能会提供一种不需要这种轮询的替代方法(例如使用队列)。@John-当然可以。这是图像上载脚本的一部分。上传请求被发送到服务器,服务器用生成的s3上传url和(要上传的)图像的url进行响应。一旦图像从浏览器上传到s3,就会触发lambda,负责图像处理并将图像文件移动到最终目的地。我认为可以设置SQS的长轮询,以了解作业何时完成。然而,我希望可以直接轮询图像url,因为这似乎更简单。(如果可以工作)那么,上述代码是否正在等待上传完成,以便触发Lambda函数进行图像处理?还是轮询最终目的地以获得后处理的图片?第二种情况——在图像上传到s3后立即开始轮询最终目的地,以便在lambda完成后获得处理后的图像。上传到s3会自动触发lambda。