我有功能,在某些情况下我需要使用回调继续进行,在某些情况下我甚至不需要打扰回调。
请建议我如何编写带可选回调的函数
先谢谢
答案 0 :(得分:5)
你需要这样的东西。这是一种常见的做法。您可以先检查回调参数是否存在,以及它实际上是一个函数。
function doSomething (argA, callback) {
// do something here
if (callback && typeof callback === 'function') {
callback();
// Do some other stuff if callback is exists.
}
}
答案 1 :(得分:0)
JavaScript被称为“鸭子打字”语言,在你的意思是对方法参数没有硬性限制。所有这些都没关系:
function test() {
console.log(arguments); // [1, 2, 3], Array style
console.log(param1); // undefined
console.log(param2); // undefined
}
function test(param1) {
console.log(arguments); // [1, 2, 3], Array style
console.log(param1); // 1
console.log(param2); // undefined
}
function test(param1, param2) {
console.log(arguments); // [1, 2, 3], Array style
console.log(param1); // 1
console.log(param2); // 2
}
test(1, 2, 3);
你甚至可以使用不同类型的参数调用:
test();
test(1, 2);
test(1, 2, 3, 4, 5);
因此,只要您跟踪实际需要的数量,就可以在方法定义中提供它们。如果其中一些是可选的,您有两种选择:
arguments
以获取其余的参数答案 2 :(得分:0)
我知道这是一个老帖子,但我没有看到这个我认为更干净的解决方案。
只有当它是函数的一个实例(因此可调用)时才会调用回调。
function example(foo, callback) {
// function logic
(callback instanceof Function) && callback(true, data)
}
example('bar')
example('bar', function complete(success, data) {
})