首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >async.apply内部async.waterfall

async.apply内部async.waterfall
EN

Stack Overflow用户
提问于 2014-03-28 13:33:10
回答 1查看 4.1K关注 0票数 1

我有以下代码片段

代码语言:javascript
复制
async.waterfall([
  // Read directory
  async.apply(fs.readdir, '../testdata'),
  // Load data from each file
  function(files, callback) {
    async.each(files, loadDataFromFile, callback);
  }
], function(err) {
  if (err) {
    api.logger.error('Error while inserting test data', err);
  }
  next();
});

有什么办法可以替代这件作品吗?

代码语言:javascript
复制
function(files, callback) {
  async.each(files, loadDataFromFile, callback);
}

只需要一个功能?正如我上面所做的,我使用async.apply()替换了以下内容:

代码语言:javascript
复制
function(callback) {
  fs.readdir('../testdata', callback);
}

我知道我可以创建自己的助手函数来完成这个任务,也可以这样做,但是我想知道是否有一种方法可以只使用像.bind().apply()这样的函数。

我已经考虑过使用.bind(),然后是.apply(),但是这会导致function(loadDataFromFile, files, callback),这是不好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-28 14:08:03

我想知道是否有一种方法只使用像.bind()或.apply()这样的函数。

不是只使用本机函数,也不是只使用来自async的函数。正如您已经注意到的,需要flip each函数。部分应用程序的某些实现(如下划线)允许中间参数,但您需要显式地包含它们。

一个使用partialRight的例子

代码语言:javascript
复制
async.waterfall([
  _.partial(fs.readdir, '../testdata'), // Read directory
  _.partialRight(async.each, loadDataFromFile), // Load data from each file
], function(err) {
  if (err)
    api.logger.error('Error while inserting test data', err);
  next();
});

可能需要将方法bind到正确的上下文,比如fs.readdir.bind(fs, '../testdata')

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22714355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档