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

Posted

技术标签:

【中文标题】检查节点中缺少的选项和回调【英文标题】:checking for missing options and callback in node 【发布时间】:2015-10-29 15:59:03 【问题描述】:

我有一个带有选项对象和回调的 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 对象 未指定的选项,只是传递了一个回调 如果根本没有传递参数怎么办?

我想检查一下我的想法是否正确 -

选项为空/空。回调已定义 -> 错误回调

选项未定义。没有选项也没有回调 -> 抛出一个新错误

选项已定义,回调未定义

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

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

【问题讨论】:

【参考方案1】:

由于这个问题带有个人色彩,所以这是我的问题:

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

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

旁注 options 可以是 undefinedcallback 可以同时是一个有效的函数。不要假设其他情况。

【讨论】:

【参考方案2】:
var func = function(p)
if (p == null)
    alert('passed null');


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

你可以在这里查看:https://jsfiddle.net/1s1nqdc7/

【讨论】:

以上是关于检查节点中缺少的选项和回调的主要内容,如果未能解决你的问题,请参考以下文章

缺少 Tensorboard 节点内存信息

如何在 Flutter 小部件中测试回调函数

Safari 桌面 Web 共享 API 中缺少“复制”选项?

缺少必需的客户端配置选项:区域

TVirtualStringTree。如何通过一次确认检查节点及其子节点?

IT小鲜肉 Widgets Tree 单选多选相关回调函数获取选中的节点功能