I have a piece of code which uses and returns a promise. However, I want to convert it to an observable. Please advice.
Original code:
export const uploadMultipleFilesToAzure = (
uploadData: Omit<UploadMultipleToAzure, 'id'>[],
handleProgress: (
loadedBytes: number,
fileData: UploadMultipleToAzure['fileData'],
uploadId: Upload['id']
) => void,
individualCallback: Function
): Promise<BlockBlobUploadHeaders[]> => {
const PIPELINE: Pipeline = newPipeline(new AnonymousCredential(), {
retryOptions: { maxTries: 4 }, // Retry options
keepAliveOptions: {
// Keep alive is enabled by default, disable keep alive by setting false
enable: false,
},
});
const promises: Promise<BlobUploadCommonResponse>[] = [];
forEach(uploadData, (uploadItem) => {
let blockBlobClient: BlockBlobClient = new BlockBlobClient(
uploadItem.BlobURL,
PIPELINE
);
promises.push(
(
blockBlobClient.uploadData(uploadItem.fileData as Blob, {
blockSize:
(uploadItem.fileData as Blob).size > 1024 * 1024 * 32
? 1024 * 1024 * 4
: 1024 * 512,
maxSingleShotSize: 1024 * 512,
concurrency: 20, // 20 concurrency,
onProgress: (ev: TransferProgressEvent) =>
handleProgress(
ev.loadedBytes / (uploadItem.fileData as Blob).size,
uploadItem.fileData,
uploadItem.id
),
}) as any
).then(() => {
individualCallback(uploadItem);
})
);
});
return Promise.all(promises);
};