首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否从使用promise的函数返回布尔值?

是否从使用promise的函数返回布尔值?
EN

Stack Overflow用户
提问于 2017-09-24 11:38:32
回答 2查看 8.2K关注 0票数 1

我有以下helper函数

代码语言:javascript
运行
复制
userExist(email) {
    this.findUserByEmail(email).then(result => {
      return true;
    }).catch(error => {
      return false;
    });

  }

然后我在另一个文件中调用它:

代码语言:javascript
运行
复制
var stuff = userService.userExist('abc')
console.log(stuff);

但是由于函数是一个promise,所以填充总是未定义的,我如何等待这个值返回true或false

EN

回答 2

Stack Overflow用户

发布于 2017-09-24 12:01:22

在大多数情况下,没有Thenable是不可能的。Promise是表示异步工作的对象。如果您通过等待来等待作业完成,那么一切都将冻结,因为JS通常在单线程环境中运行。

如果您希望在为异步内容重新编写同步编程的环境中编写代码,请尝试使用async / await语法。我非常喜欢它。基本上,它看起来像这样:

代码语言:javascript
运行
复制
async function checkUserExists() {
  const exists = await userService.userExists('abc')
  console.log('Exists', exists)
}

您需要认识到,承诺仍然在引擎盖下使用。Babel和Typescript现在都支持这种语法,以便向后兼容ES5。根据Node,它从7.6开始支持。

票数 3
EN

Stack Overflow用户

发布于 2017-09-24 11:39:36

使用then方法附加将在promise解析后调用的回调:

代码语言:javascript
运行
复制
userService.userExist('abc').then(stuff => {
  console.log(stuff);
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46386357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档