Javascript 使用映射并将对象传递给后续函数调用
我有一些这样的代码:Javascript 使用映射并将对象传递给后续函数调用,javascript,node.js,promise,bluebird,Javascript,Node.js,Promise,Bluebird,我有一些这样的代码: var downloadFiles = function () { console.log('downloading files'); aFtpClient. listAsync(). then(processListing). map(function (object) { return processItem(object); }).
var downloadFiles = function () {
console.log('downloading files');
aFtpClient.
listAsync().
then(processListing).
map(function (object) {
return processItem(object);
}).
then(downloadItem).
catch (TypeError, function (e) {
console.dir('arse' + e);
}).
catch (Promise.RejectionError, function (e) {
console.error("unable to read file, because: ", e.message);
});
console.log('after downloading files');
};
processListing
返回具有源和目标属性的对象数组。我使用map
处理数组并调用processItem
。有没有办法将映射的对象传递给下载项?我同意
.map(function (object) {
return processItem(object).then(function(processResult) {
return {input: object, result: processResult};
});
})
现在downloadItem
可以访问每个已处理项目的.input
和.result
。您的意思是要访问downloadItem
中的对象,而不仅仅是processItem(对象)的结果
?是的,因为对象包含源ie/download from source和downloadItem以放置到destinationNice,值得一提的是,.bind
还可以用于为Bluebird中的承诺链提供上下文,这在类似的情况下可能是有益的。是的,也可能是有益的,尽管我认为它稍微模糊了代码。另外,我认为它不能很好地与地图配合使用
谢谢,我今天正在做类似的事情