foreach循环中的promise(Typescript 2)

dr1*_*1v3 1 promise typescript angular

我坚持使用promise链,我需要在将图像上传到服务器后继续执行一些代码.它是Angular2和Typescript.让我们写一些伪代码:

uploadImages(images):Promise<any> {
    return new Promise((resolve, reject) => {
        for (let image of images) {
            upload(image.type_1).on('upload_completed', (data) => {
                 // do something
            })

            upload(image.type_2).on('upload_completed', (data) => {
                 // do something
            })
    }
}

uploadImages(images).then(doSomethingElse);
Run Code Online (Sandbox Code Playgroud)

我以某种方式完成了这项任务,但我对承诺链有点困惑,我无法弄清楚如何在foreach循环中链接这个图像上传,并在所有上传时将结果返回到新的承诺中完成.这样做的正确方法是什么?

编辑:循环中有基于事件的回调,如何使用Promise.all()转换为promises它们?

dr1*_*1v3 8

uploadImages(images):Promise<any> {
    let promises_array:Array<any> = [];
    for (let image of images) {
        promises_array.push(new Promise(function(resolve,reject) {
            upload(image.type_1).on('upload_completed', (data) => {
                    resolve(true);
            })
        }));
        promises_array.push(new Promise(function(resolve,reject) {
            upload(image.type_2).on('upload_completed', (data) => {
                    resolve(true);
            })
        }));
    return Promise.all(promises_array);
}
uploadImages(images).then(doSomethingElse);
Run Code Online (Sandbox Code Playgroud)