承诺不会解决为真或假

时间:2017-06-18 13:41:21

标签: javascript promise

export const checkLoggedIn = () => {
  return new Promise((resolve, reject) => {
    apiConfig.fetchApi('/users/is_valid', {}, 'get', {})
    .then((resp)=> {
        resolve(true);
    })
    .catch((exception)=> {
        reject(false);
    })
    .done()
  })
}

以上是我的用户令牌检查代码。 但是函数checkLoggedIn()正如下图所示 enter image description here

但我只想得到真或假。 如果您在代码中发现问题,请将其注释掉

1 个答案:

答案 0 :(得分:2)

请检查thencatch的定义以及Promise的一般定义和用法。

在您的示例中apiConfig.fetchApi似乎返回了一个Promise(因为您使用的是then(),它适用于Promise)。因此,您不必创建新的Promise。

您的代码可能如下所示(我在此处排除了响应参数,因为您没有在代码段中使用它):

export const checkLoggedIn = () => (
  apiConfig.fetchApi('/users/is_valid', {}, 'get', {})
    .then(() => true)
    .catch(error => { console.log(error); return false; })
);

如果apiConfig.fetchApi 返回Promise,则可以创建Promise。但是,您必须使用apiConfig.fetchApi的返回值并根据其值进行解析或拒绝。