如果我想 promise myFunction
中的所有代码路径,我需要在 myFunction
中创建一个 deferred
吗?
function myFunction(options) {
if(!options) {
throw 'foo'; // But I want the API for myFunction to be promise-based...
}
return promiseBasedApi.doSomethingAndReturnPromise();
}
最佳答案
do I need to create a deferred inside
myFunction
?
(这是 jQuery 术语,一般情况是“我需要在我的函数中创建一个 Promise 吗?”)
仅如果您的函数还没有可以返回的 promise ;如果它正在等待任何异步操作(ajax、其他一些基于 Promise 的 API 等)完成,那么它经常会这样做。
<小时/>if(!options) { throw 'foo'; // But I want the API for myFunction to be promise-based... }
如果您询问是否需要为未提供 options
的错误创建拒绝 promise ,不,我不希望 API 这样做。异步操作的 API 有两个方面:
启动
完成
在上面,在请求启动期间未能提供选项
是一个错误。我希望出现内联异常,而不是异步错误回调。
处理请求时出现的错误(HTTP 失败等)将是我通过 Promise 的拒绝机制所期望的错误。
关于javascript - promise API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253257/