gpt4 book ai didi

javascript - 使用 promises 增量加载图像

转载 作者:行者123 更新时间:2023-11-29 10:37:21 24 4
gpt4 key购买 nike

我试图在 promises 的帮助下加载相同的图像但分辨率不同,一个一个地加载,首先是 1.png,然后是 2.png,然后是 3.png,但是当我运行代码时,它只加载3.png 图片,我做错了什么?

function loadi(srce){
if(srce!='3.png'){
$img1.attr('src',srce).on('load',function(){

return loadImag();
});
}
else{
$img1.attr('src',srce).on('load',function(){
console.log("Load successful");
});
}
}
function loadImag(){
return new Promise(function(fulfill,reject){
fulfill();
});
}
loadImag()
.then(loadi('1.png'),null)
.then(loadi('2.png'),null)
.then(loadi('3.png'),null);

第一个建议后的新代码,仍然面临同样的问题,在 chrome 开发工具中只加载了一张图片

function loadi(srce){

return loadImage(srce);

}

function loadImage(src) {
return new Promise(function(resolve, reject) {
$img1.attr('src',src).on('load',function(error){

resolve();
});
// Run image loading logic here
// Call resolve() when loading complete, or reject() when fails.
});
}

loadImage('1.png')
.then(loadi('2.png'))
.then(loadi('3.png'))
.then(function() {
console.log('Load successful!');
}) // Not in loadImage().
.catch(function(err) {
console.log("Error");/* Handle potential errors */
});

最佳答案

您的代码有一些问题:

  • loadi 不返回 Promise。从回调中返回未按预期工作。
  • loadImag 基本上可以用Promise.resolve()代替。
  • .then() 需要一个函数,您正在传递该函数的结果。

您的代码应如下所示:

function loadImage(src) {
return new Promise(function(resolve, reject) {
// Run image loading logic here
// Call resolve() when loading complete, or reject() when fails.
)};
}

loadImage('1.png')
.then(function() { return loadImage('2.png'); })
.then(function() { return loadImage('3.png'); })
.then(function() { console.log('Load successful!'); }) // Not in loadImage().
.catch(function(err) { /* Handle potential errors */ });

关于javascript - 使用 promises 增量加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34587652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com