在这种情况下如何维护一个类似 Promise 的 API? [英] How to maintain a promise-like API in this case?

查看:21
本文介绍了在这种情况下如何维护一个类似 Promise 的 API?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

function foo(options) {
  if(!isValid(options)) {
    // I want to return a resolved promise here to permit client code to continue without a failure
  }

  return promisifiedThirdPartyApi(options); // Does not handle an invalid options object successfully
}

如何在无效"的情况下惯用地返回已解决的承诺?

How can I idiomatically return a resolved promise in the "invalid" case?

推荐答案

Native Promises

看看原生 Promise 对象的静态方法 resolve拒绝.

function foo(options) {
  if(!isValid(options)) {
    return Promise.resolve();
  }

  return promisifiedThirdPartyApi(options);
}

角 $q

使用 $q.when 从一些非 Promise 对象返回一个已解决的 Promise:

Angular $q

Use $q.when to return a resolved Promise from some non-Promise object:

function foo(options) {
  if(!isValid(options)) {
    return $q.when([]);
  }

  return promisifiedThirdPartyApi(options);
}

Q 承诺

使用 Q.resolve() 返回一个已解决的承诺.

Q Promises

Use Q.resolve() which returns a resolved promise.

function foo(options) {
  if(!isValid(options)) {
    return Q.resolve();
  }

  return promisifiedThirdPartyApi(options);
}

这篇关于在这种情况下如何维护一个类似 Promise 的 API?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆