我有以下helper函数
userExist(email) {
    this.findUserByEmail(email).then(result => {
      return true;
    }).catch(error => {
      return false;
    });
  }然后我在另一个文件中调用它:
var stuff = userService.userExist('abc')
console.log(stuff);但是由于函数是一个promise,所以填充总是未定义的,我如何等待这个值返回true或false
发布于 2017-09-24 12:01:22
在大多数情况下,没有Thenable是不可能的。Promise是表示异步工作的对象。如果您通过等待来等待作业完成,那么一切都将冻结,因为JS通常在单线程环境中运行。
如果您希望在为异步内容重新编写同步编程的环境中编写代码,请尝试使用async / await语法。我非常喜欢它。基本上,它看起来像这样:
async function checkUserExists() {
  const exists = await userService.userExists('abc')
  console.log('Exists', exists)
}您需要认识到,承诺仍然在引擎盖下使用。Babel和Typescript现在都支持这种语法,以便向后兼容ES5。根据Node,它从7.6开始支持。
发布于 2017-09-24 11:39:36
使用then方法附加将在promise解析后调用的回调:
userService.userExist('abc').then(stuff => {
  console.log(stuff);
})https://stackoverflow.com/questions/46386357
复制相似问题