javascript - promise API

标签 javascript promise q

如果我想 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 有两个方面:

  1. 启动

  2. 完成

在上面,在请求启动期间未能提供选项是一个错误。我希望出现内联异常,而不是异步错误回调。

处理请求时出现的错误(HTTP 失败等)将是我通过 Promise 的拒绝机制所期望的错误。

关于javascript - promise API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253257/

相关文章:

javascript - 如何在 Node.js 中使用 JSON 对象更新 mySQL 表?

javascript - 如何在 Node.js 函数中应用 Promise

javascript - 理解js中的fetch

javascript - Node.js promise 使用 Q

javascript - 在不循环所有数组的情况下删除数组的对象

javascript - 表格中并排输入和两个按钮

javascript - 如何在没有时区转换的情况下即时输出日期/时间

javascript - 我可以取消 promise 的执行吗?尝试检查数千个链接并且不想等待请求超时

javascript - promise 与 Q 的序列组合

javascript - Bluebird 返回 promise 丢失警告