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

我有以下帮助function

userExist(email) { this.findUserByEmail(email).then(result => { return true; }).catch(error => { return false; }); } 

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

 var stuff = userService.userExist('abc') console.log(stuff); 

但东西总是未定义,因为函数是一个承诺,我如何等待这个值,我的帮助函数返回true或false

在大多数情况下,不能使用Thenable。 承诺是代表asynchronous工作的对象。 如果你等待这个工作等待完成,所有东西都会被冻结,因为JS通常运行在一个单线程的环境中。

如果你想在一个环境中编码asynchronous的东西,请尝试async / await语法。 我很喜欢。 基本上,它看起来像这样:

 async function checkUserExists() { const exists = await userService.userExists('abc') console.log('Exists', exists) } 

你需要意识到,承诺仍然在引擎盖下使用。 Babel和Typescript现在都支持这种语法,以便与ES5向后兼容。 根据节点,自7.6起支持。

使用then方法附加一个callback,一旦promise被parsing,将被调用:

 userService.userExist('abc').then(stuff => { console.log(stuff); })