我从DDP中获取对象中的图像。当我从其他应用程序(通过ddp)调用方法时,我获取图像,并且我获得了每个图像的图像ID和图像URL的对象。现在它们都是大图像,当我点击在我的应用程序中显示下一个时,每个加载大约需要5秒。现在,我想在客户端预加载它们。为了解释它好一点,当我监控img加载在meteor工具中的chrome时,我可以看到加载ceach图像的时候(只有当我显示该图像时),但是当我从其他应用程序获取它们时我希望所有这些加载通过ddp。我怎么能这样做?感谢
更新:代码&&可行的解决方案
所以,这是我的代码,我在这里获取图像并调用功能,即兑换图片,它在localhost中工作,它是很好的解决方案,但是当它部署时我得到这个错误:
混合内容:' https://tasks-dev.microwork.io/imageQA'是通过HTTPS加载的,但是请求了一个不安全的XMLHttpRequest端点' http://52.39.141.15:11011/simplentp/sync'。此请求已被阻止;内容必须通过HTTPS提供。
代码:
...
this.autorun(() => {
const user = Meteor.users.findOne(Meteor.userId(), {fields: {'services.MicroworkOAuth2Server.accessToken': 1}})
if (user && user.services && user.services.MicroworkOAuth2Server) {
Meteor.call('getImagesForQA', user.services.MicroworkOAuth2Server.accessToken, 10, (error, images) => {
if (error) {
console.log(error)
} else {
console.log('Images recieved: ', images)
this.current.set(0)
this.images.set(images)
this.isLoading.set(false)
preload(images)
wheelzoom($('.open-image'))
}
})
} else {
this.isLoading.set(true)
}
})
...
Localhost解决方案,但已部署错误
preload = function preloadImages(srcs) {
if (!preloadImages.cache) {
preloadImages.cache = [];
}
var img;
for (var i = 0; i < srcs.length; i++) {
img = new Image();
img.src = srcs[i].imageURL;
console.log(img)
preloadImages.cache.push(img);
}
}