我想知道如何创建一个函数来调用数组中的所有函数,而无需显式创建函数。我说的是普通的 javascript(或者可能是一些 underscore.js/lodash 助手,但我没有发现任何有用的东西)。
假设我们有一个需要回调的方法:
function doSmth(cb) {
console.log('doing smth');
cb();
}
现在我们有三个想要调用的函数,但我们不想显式创建包装函数。
function write1() {
console.log(1)
}
function write2() {
console.log(2)
}
function write3() {
console.log(3)
}
我们能否以某种方式将 [write1, write2, write3]
数组简化为单个函数?我尝试将 Function.prototype.call
绑定(bind)到 Array.prototype.forEach
但我没有得到任何结果。
编辑:我忘了提及我们不想修改 doSmth
最佳答案
您可以使用 forEach
和一些辅助函数。
let invoke = (fn, ...args) => fn(...args);
arr.forEach(invoke);
// or for an array of the results
let results = arr.map(invoke);
// es5 translation of invoke
var invoke = function() {
var fn = arguments[0];
var args = [].slice.call(arguments, 1, arguments.length);
return fn.apply(null, args);
};
let doIt = arr.forEach.bind(arr, invoke)
takesACallback(doIt);
关于javascript - 将一组回调函数减少为一个回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38149380/