Кто-нибудь мне в этом поможет? L oop переходит к следующему индексу до того, как обещание разрешено для текущего индекса. Вот мой код
let images = [
{
uri : 'file1://.....',
},
{
uri : 'file2://.....',
isBase64:true,
base64:'ATDDJWUDUWDUDGIHDIHDI'
},
{
uri : 'file3://.....',
}
];
imageProcessing().then(()=>{
console.log('All done')
})
imageProcessing = () => {
return new Promise((resolve) => {
images.forEach(async (element, index) => {
await convertUriToBase64(element, index);
if(images.length -1 === index){
resolve();
}
});
});
};
let convertUriToBase64 = (element,index) => {
return new Promise(async(resolve) => {
if(element.isBase64){
let base64 = await doSomeAsyncStuff(element.uri,'base64'); // got base64
images[index].base64 = base64;
images[index].isBase64 = true;
console.log(index + ' done');
resolve();
}
else{
console.log(index + ' done');
resolve(); // resolve if already it is in base64 format
}
});
};
Можно ли заставить его работать вот так? Я получил такой вывод
0 готово 2 готово Все готово 1 готово
Ожидаемый результат
0 done
1 done
2 done
All done
Спасибо