alu*_*ian 1 javascript node.js node-async
我有以下代码片段
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();
});
Run Code Online (Sandbox Code Playgroud)
有没有办法可以替换这件作品:
function(files, callback) {
async.each(files, loadDataFromFile, callback);
}
Run Code Online (Sandbox Code Playgroud)
只是一个功能?就像我上面所做的那样,使用async.apply()我替换了这个:
function(callback) {
fs.readdir('../testdata', callback);
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建自己的辅助函数来做到这一点,或者我可以这样离开它,但我想知道是否有办法只使用像.bind()或等函数来做到这一点.apply().
我想过使用.bind()则.apply()但这将导致function(loadDataFromFile, files, callback)这是不行的.
我想知道是否有办法只使用.bind()或.apply()等函数.
不仅使用本机功能,或仅使用本机功能async.正如您所注意到的,人们需要flip这个each功能.部分应用程序的某些实现(如Underscore)允许使用中间参数,但您需要明确包含它们.
lodash的partialRight一个例子:
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();
});
Run Code Online (Sandbox Code Playgroud)
可能你需要bind将方法带到正确的上下文中,比如fs.readdir.bind(fs, '../testdata').
| 归档时间: |
|
| 查看次数: |
3816 次 |
| 最近记录: |