javascript - Promise.all 在执行所有解析之前触发
问题描述
我有以下代码:
const promises = [];
const gltfLoader = new THREE.GLTFLoader(manager);
for (const model of Object.values(tmodels)) {
promises.push(processTransformModel(model));
}
Promise.all(promises)
.then(() => {
manager.onLoad = function () {
loadAttachModels();
};
})
.catch((e) => {
// handle errors here
});
function processTransformModel(model) {
new Promise( function( resolve, reject ) {
if ( model.url.match( /\.zip$/ ) ) {
new THREE.ZipLoader().load( model.url ).then( function( zip ) {
manager.setURLModifier( zip.urlResolver );
resolve( zip.find( /\.(gltf|glb)$/i )[ 0 ] );
} );
} else {
resolve( url );
}
} ).then( function ( file ) {
gltfLoader.load(file, (gltf) => {
//do stuff with gltf
} );
}
有两个gltf文件要加载,一个小,一个大。大的首先添加到数组中。我已经追踪了一点代码。在调用“Promise.all”之前,Promises 数组是完整的(两个元素)。但是“Promise.all”总是在执行小文件解析后触发。大文件解析总是在“Promise.al”被触发后执行。
我无法弄清楚发生了什么。