承诺流 - 蓝鸟

时间:2017-02-09 19:50:52

标签: node.js promise bluebird

我正在尝试使用ffmpeg来剪切带有mp3的目录的几秒钟。 但我的实际问题来自于使用承诺。

不是在另一个之后启动一个ffmpeg进程,而是立即为每个文件启动一个。 我的猜测是承诺不等待决心,我不理解它。

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);
});

1 个答案:

答案 0 :(得分:1)

我已经创建了代码的简化版本。唯一缺少的是最后一次关闭的 return 语句:

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);
});