【发布时间】:2016-08-09 14:11:16
【问题描述】:
在函数中验证参数并返回错误是很常见的。
但是,在 JavaScript 回调函数中,如:
function myFunction(num, callback) {
if (typeof num !== 'number') return callback(new Error('invalid num'))
// do something else asynchronously and callback(null, result)
}
我写了很多这样的函数,但我想知道是否有潜在的危害。因为在大多数情况下,调用者假定这是一个异步函数,并且回调将在函数调用之后的代码之后执行。但是如果某些参数无效,该函数将立即调用回调。所以调用者必须小心处理这种情况,即意外的执行顺序。
我想听听关于这个问题的一些建议。我是否应该仔细假设所有异步回调都可以立即执行?或者我应该使用类似 setTimeout(..., 0) 的东西将同步的东西转换为异步的东西。或者有更好的解决方案我不知道。谢谢。
【问题讨论】:
标签: javascript error-handling callback