承诺流 - 蓝鸟
promise flow - 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);
});
我已经创建了您的代码的简化版本。唯一缺少的是最终闭包的 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);
});
我正在尝试使用 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);
});
我已经创建了您的代码的简化版本。唯一缺少的是最终闭包的 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);
});