检查缺少的选项和节点中的回调

时间:2015-08-06 13:15:28

标签: node.js error-handling

我有一个带有选项对象和回调的aysnc函数

function myFunc(options,callback) {
  // do stuff
  callback(null);
}

作为我的防守型人,我想检查参数中的任何潜在问题

所以我做的第一件事就是为options.name添加一个测试(因为我需要那个属性)

function myFunc(options,callback) {
  if (!options.name) { callback(new Error("name must be specified")) }
  // do stuff
  callback(null);
}

但是 - 这导致了一系列的想法..如果

  • 选项是空对象或空对象
  • 未指定的选项,仅传递回调
  • 如果没有传递任何参数怎么办?

我想检查一下我的想法 -

  • options为null / empty。回调已定义 - > 回调错误
  • 选项未定义。没有选项也没有回调 - > 抛出新错误

  • 定义了选项,回调不是

    • typeof options是一个函数 - > 使用选项作为回调,错误
    • typeof选项不是函数 - > 抛出错误

所以,那是很多检查......人们真的做了这一切吗?确保参数存在且正确的最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

由于这个问题具有个人感,所以这是我的:

回调的目的是提供异步操作的结果。因此,它只需要异步调用。如果有任何事情阻止您的代码完成其任务,并且您可以同步识别它,则返回错误值(如果已定义或抛出)。

如果异步操作失败,请使用回调通知。

旁注 options可以是undefinedcallback可以同时是有效的功能。不要以其他方式假设。

答案 1 :(得分:-1)

var func = function(p){
if (p == null){
    alert('passed null');
}

if (typeof p === 'undefined'){
    alert('not passed at all')
}

您可以在此处查看:https://jsfiddle.net/1s1nqdc7/