如何用Javascript编写预加载函数?
如何编写一个函数,在调用另一个函数之前加载函数中的所有内容?例如,(类似于P5.js),我想实现一个预加载函数,在执行设置函数之前加载任何需要加载的内容(即图像)如何用Javascript编写预加载函数?,javascript,Javascript,如何编写一个函数,在调用另一个函数之前加载函数中的所有内容?例如,(类似于P5.js),我想实现一个预加载函数,在执行设置函数之前加载任何需要加载的内容(即图像) let someImage; function preload() { someImage = new Image(); someImage.src = "some URL"; someImage.onload = imageLoaded; } function imageLoaded() {
let someImage;
function preload() {
someImage = new Image();
someImage.src = "some URL";
someImage.onload = imageLoaded;
}
function imageLoaded() {
//this is called before setup
}
function setup() {
//I can safely assume everything is properly loaded
}
在Javascript中实现这一点的最佳方法是让预加载函数返回承诺,然后将所有代码放入承诺成功返回中。如果您希望按特定顺序调用函数,那么可以执行承诺链
let someImage;
function preload() {
someImage = new Image();
someImage.src = "some URL";
someImage.onload = imageLoaded;
return new Promise((resolve)=>resolve());
}
preload().then(function(){
setup();
});
function setup() {
}
确保在
.src
之前分配事件,您可以执行图像的函数.onload
函数预加载(url,doneFunc){
const img=新图像;
img.onload=()=>{
doneFunc();
}
img.onerror=()=>{
log(img.src+'load failure');
}
img.src=url;
}
预加载('yourImg.png',()=>{
log('executecode here');
});代码>要预加载图像,实际上需要注意提供值的顺序。如果在onload
之前添加src
,则图像可能会在onload
功能运行之前加载
令人烦恼的是,这比听起来更可能。同样的事情也适用于
我会这样做:
让一些人想象;
函数预加载(){
someImage=新图像();
返回新承诺((解决、拒绝)=>{
//这将在.then函数中传递事件对象
someImage.onload=解析;
//如果要处理未加载的图像,则为可选
//someImage.onerror=拒绝;
someImage.src=“一些URL”;
});
}
//现在,你可以用两种方式来完成这项工作,这取决于你的船的漂浮物
//您可以将设置函数更改为异步/等待
异步函数设置(){
试一试{
让imageResult=等待预加载();
imageLoaded();
//原始设置函数中的代码
}捕获(e){
//处理错误
}
}
//或者您可以使用回调进行承诺链接
预载
。然后(loadEvent=>imageLoaded())
。然后(()=>setup());
//.catch(error=>handleError(error));//可选;
使用async Wait,您就可以做到这一点
let someImage="i-m-a--g-e";
let load = true
function preload() {
console.log("running preload",someImage)
return new Promise((resolve,reject)=>{
if(load){ return resolve()}else{return reject()}
}
);
}
function setup(){
console.log("running setup")
}
(async () => {
await preload();
setup();
})();
这是否回答了您的问题?这回答了你的问题吗?不完全是…解决需要在加载时发生。。。Java不是JavaScript。