Javascript Promise.all在执行所有解析之前触发
我有以下代码:Javascript Promise.all在执行所有解析之前触发,javascript,promise,Javascript,Promise,我有以下代码: const promises = []; const gltfLoader = new THREE.GLTFLoader(manager); for (const model of Object.values(tmodels)) { promises.push(processTransformModel(model)); } Promise.all(promises) .then(() => { manager.on
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文件要加载,一个小,一个大。首先将大的一个添加到数组中。
我已经跟踪了一点代码。
Promises数组在调用“Promise.all”之前已完成(两个元素)。
但是“Promise.all”总是在执行小文件解析后触发。大文件解析总是在触发“Promise.al”之后执行
我不知道发生了什么。
promiseTransformModel()
需要返回承诺。返回新承诺(…)
我刚才向您展示了位置:就在新承诺之前
您如何从JavaScript中的函数返回内容?好的,现在很清楚了。谢谢