如何在nodejs中编写可选的回调方法

时间:2015-09-16 09:20:44

标签: node.js

我有功能,在某些情况下我需要使用回调继续进行,在某些情况下我甚至不需要打扰回调。

请建议我如何编写带可选回调的函数

先谢谢

3 个答案:

答案 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);

因此,只要您跟踪实际需要的数量,就可以在方法定义中提供它们。如果其中一些是可选的,您有两种选择:

  1. 定义但不使用它们
    • 当参数的长度很小时,通常会使用
  2. 使用arguments以获取其余的参数

答案 2 :(得分:0)

我知道这是一个老帖子,但我没有看到这个我认为更干净的解决方案。

只有当它是函数的一个实例(因此可调用)时才会调用回调。

function example(foo, callback) {
    // function logic

    (callback instanceof Function) && callback(true, data)
}

example('bar')
example('bar', function complete(success, data) {

})