我正在编写一个JavaScript函数,它发出一个HTTP请求并返回结果的承诺(但这个问题同样适用于基于回调的实现)。异步API应该同步抛出吗?
如果我马上就知道了函数提供的参数是无效的,应在功能throw
同步,还是应该返回一个拒绝承诺(或者,如果你愿意,调用回调函数与Error
实例)?
异步函数应该如何重要总是行为异步的方式,特别是对于错误条件?如果知道程序处于异步操作继续进行的适当状态,throw
可以吗?
e.g:
function getUserById(userId, cb) {
if (userId !== parseInt(userId)) {
throw new Error('userId is not valid')
}
// make async call
}
// OR...
function getUserById(userId, cb) {
if (userId !== parseInt(userId)) {
return cb(new Error('userId is not valid'))
}
// make async call
}
也看看[为什么用于JS拒绝承诺例外? ](http://stackoverflow.com/q/21616432/1048572) – Bergi