Использование Promises с fs.readFile в цикле

Я пытаюсь понять, почему нижеприведенные настройки не работают.

(Примечание: я уже решил эту проблему с помощью async.map. Но я хотел бы узнать, почему мои попытки ниже не сработали.)

Правильное поведение должно быть таким: bFunc должен запускаться столько раз, сколько необходимо, чтобы fs прочитал все файлы изображений (bFunc ниже запускается дважды), а затем консоль cFunc выдает «End».

Спасибо!

Попытка 1: он запускается и останавливается на cFunc ().

var fs = require('fs');

bFunc(0)
.then(function(){ cFunc() }) //cFunc() doesn't run

function bFunc(i){
    return new Promise(function(resolve,reject){

        var imgPath = __dirname + "/image1" + i + ".png";

        fs.readFile(imgPath, function(err, imagebuffer){

            if (err) throw err;
            console.log(i)

            if (i<1) {
                i++;
                return bFunc(i);
            } else {
                resolve();
            };

        });

    })
}

function cFunc(){
    console.log("End");
}

Попытка 2: в этом случае я использовал цикл for, но он выполняется не по порядку. Печать на консоли: конец, bFunc сделано, bFunc сделано

var fs = require('fs');

bFunc()
        .then(function(){ cFunc() })

function bFunc(){
    return new Promise(function(resolve,reject){

        function read(filepath) {
            fs.readFile(filepath, function(err, imagebuffer){
                if (err) throw err;
                console.log("bFunc done")
            });
        }

        for (var i=0; i<2; i++){
            var imgPath = __dirname + "/image1" + i + ".png";
            read(imgPath);
        };

        resolve()
    });
}


function cFunc(){
    console.log("End");
}

Спасибо за помощь в продвижении!

Ответы на вопрос(4)

Ваш ответ на вопрос