使用 promises 增量加载图像
Incremental loading of images with promises
我正在尝试加载相同的图像但分辨率不同,一张一张地加载,首先是 1.png,然后是 2.png,然后是 3.png,在 promises 的帮助下,但是当我 运行 代码,它只加载 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
不是 return 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 */ });
我正在尝试加载相同的图像但分辨率不同,一张一张地加载,首先是 1.png,然后是 2.png,然后是 3.png,在 promises 的帮助下,但是当我 运行 代码,它只加载 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
不是 return 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 */ });