【发布时间】:2020-01-02 06:00:12
【问题描述】:
我有一大堆字符串,每个字符串最终都应该制作/加载一个 iframe。这个想法是按顺序加载每个 iframe:iframe 1 loaded → start loading iframe 2... etc..
我想通过将数组分成块并并行运行来划分负载。但是,我不知道如何在此设置中按顺序运行每个块的内容。
- Chunk[0] → 加载 iframe 1 → 加载 iframe 1 → 加载 iframe 2 → 加载 iframe 2 → 完成
- Chunk[1] → 加载 iframe 3 → 加载 iframe 3 → 加载 iframe 4 → 加载 iframe 4 → 完成
- Chunk[2] → 加载 iframe 5 → 加载 iframe 5 → 加载 iframe 6 → 加载 iframe 6 → 完成
- Chunk[3] → 加载 iframe 7 → 加载 iframe 7 → 加载 iframe 8 → 加载 iframe 8 → 完成
- Chunk[4] → 加载 iframe 9 → 加载 iframe 9 → 加载 iframe 10 → 加载 iframe 10 → 完成
- 当所有块都完成后显示结果。
我该怎么做?
现在我的代码可以做我想做的一切,除了顺序加载:
var promiseArray = [];
var urlParams = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var maxLength = urlParams.length/5;
var chunks = divideArray( urlParams, maxLength );
for ( var chunkIndex=0; chunkIndex < chunks.length; chunkIndex++) {
var urlParams = chunks[ chunkIndex ];
console.log( 'Chunk-' + chunkIndex );
for ( var paramIndex=0; paramIndex < urlParams.length; paramIndex++) {
promiseArray.push(
new Promise((resolve, reject) => {
var urlParam = urlParams[ paramIndex ];
var iframe = $('<iframe src="https://gist.github.com/joonaspaakko/414c4a43ac092f562e07e1642fa75dc5.pibb?val=' + urlParam + '"></iframe>');
iframe.prependTo('body');
iframe.on("load", function() {
// var iframeBody = iframe.contents().find('body');
iframe.remove();
console.log( 'Iframe-'+ urlParam );
resolve( 'Iframe-'+ urlParam +' loaded.');
});
})
)
}
}
Promise.all( promiseArray ).then(function( result ) {
console.log(result);
});
function divideArray( array, maxLength ) {
var chunks = [];
for ( var i=0; i < array.length; i+=maxLength ) {
chunks.push( array.slice(i,i+maxLength) );
}
return chunks;
}
【问题讨论】:
标签: javascript