检查节点中缺少的选项和回调
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
可以是 undefined
和 callback
可以同时是一个有效的函数。不要假设其他情况。
【讨论】:
【参考方案2】:var func = function(p)
if (p == null)
alert('passed null');
if (typeof p === 'undefined')
alert('not passed at all')
你可以在这里查看:https://jsfiddle.net/1s1nqdc7/
【讨论】:
以上是关于检查节点中缺少的选项和回调的主要内容,如果未能解决你的问题,请参考以下文章
Safari 桌面 Web 共享 API 中缺少“复制”选项?