1
有没有更好的方法来写这个?大多数情况下,下面的代码可以工作,但如果可能的话,我想清理它。迭代数组并加入Bluebird
作为参考,在初始回调中outputs
是一个对象数组,包含文件路径和一些元数据。我希望在致电this.track.attach()
时可以访问此元数据,但我不确定如何在承诺链中稍后访问它。
var query = Track.findById('54d5059b7403dda6395bb08b').exec();
var encode = encoder.encode('/* file path */');
Promise.join(query, encode, function (track, outputs) {
this.track = track;
return Promise.map(outputs, function (output) {
return upload.create(output.path, '/jr' + path.extname(output.path));
});
}).each(function (output) {
this.track.attach(output.name, 'media');
}).then(function() {
return this.track.saveAsync();
}).catch(function (err) {
console.log(err);
}).finally(function() {
encoder.cleanup();
}).bind({});
我想加入一个承诺,以改善该那下载文件。你有关于如何处理这种情况的任何提示? 我认为我的主要问题是理解Promise.join()如何将参数传递给每个返回一个可靠(或Promise,无论你称之为)的函数。一旦我能理解这一点,我就会摆脱杂草。 – 2015-02-07 07:02:12
@NicholasYoung恐怕这有点太模糊。在这个过程的什么时候你想要下载文件?使用什么作为输入?它只是一个文件,或者每个'output'的文件?等等 – JLRishe 2015-02-07 15:15:06