试图了解基于承诺的JavaScript代码

时间:2018-03-05 13:45:37

标签: javascript react-native promise

我在existing open source library中有以下承诺代码:

简化代码如下:

class SignIn extends React.Component {
  constructor(props) {
    super(props);
    // What is the underlying type of this.resolver ?
    this.resolver = Promise.resolve();
  }

  handleMFACancel() {
    // Is resolver a function ?
    this.resolver(null);
  }
  handleMFASuccess(session) {
    // Is resolver a function ?
    this.resolver(session);

  }
}

我不明白我们如何使用this.resolver作为函数。

它不应该是一个已经解决的承诺,也可能只是一个承诺。

1 个答案:

答案 0 :(得分:0)

正如您在此处所见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve Promise.resolve()返回新的Promise对象

通常这用于创建统一的API,因为返回的Promise会立即使用提供的值解析(在您的情况下没有值 - 但您可以使用Promise.resolve('some-value')

你可能想要做的是控制取消或成功应该通过实现你自己的代码来进行实际登录并将解析器承诺设置为你自己的特定逻辑来处理,例如(伪代码):

this.resolver = http.someCallToGetSession().then(({ result, session }) => {
  if (result.val === 'ok') {
    return session;
  } else {
    throw new Error('Session not found');
  }
});