【发布时间】:2011-11-20 07:49:27
【问题描述】:
我有一个函数,downloadAsync(),它返回一个 CommonJS 承诺(使用 Q)。它可能会以两种方式失败:
- 文件已经可以下载,在这种情况下我们立即知道。
- 下载过程可能会失败,在这种情况下我们会在一段时间后知道。
在情况 (1) 中,由于我在异步发生之前就知道,我可以抛出异常。在情况(2)中,我不得不拒绝承诺。
我的问题是,我的 API 是否应该统一并始终通过拒绝承诺来表示错误?或者我应该为立即确定的无效状态条件抛出异常?再举一个例子,如果用户向我传递了一个无效的参数,那么抛出错误似乎比拒绝承诺更明智。
澄清一下“异常”的承诺拒绝究竟是怎样的,也很好;那里的用法是否与异常使用实践一一对应,还是我们也将其用于非异常故障?
【问题讨论】:
标签: javascript commonjs promise