F. Rakes
F. Rakes

Reputation: 1537

promise flow - bluebird

I'm trying to use ffmpeg to cut a few seconds of a directory with mp3s. But my actual problems comes with using promises.

Instead of starting one ffmpeg process after the other it starts up one for each file immediately. My guess is the promise isn't waiting for the resolve and I didn't understand it properly.

var P = require('bluebird');
var fs = P.promisifyAll(require("fs"));

function transcode(filename) {
    return P.delay(1000).then(function() {
        console.log(filename);
    });
}
var in_dir = "./somedir/";

var getFiles = function(){
    return fs.readdirAsync(in_dir);
};

getFiles().mapSeries(function(filename){
    transcode(filename);
});

Upvotes: 0

Views: 104

Answers (1)

Sébastien
Sébastien

Reputation: 1053

I've created a simplified version of your code. The only missing thing was the return statement for the final closure:

var P = require('bluebird');
var fs = P.promisifyAll(require("fs"));

function transcode(filename) {
    return P.delay(1000).then(function() {
        console.log(filename);
    });
}
var in_dir = "./somedir/";

var getFiles = function(){
    return fs.readdirAsync(in_dir);
};

getFiles().mapSeries(function(filename){
    return transcode(filename);
});

Upvotes: 1

Related Questions