从使用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); })
- 对FB和G +计数端点的批量asynchronous调用失败
- 等待array.map中的asynchronous进程等待
- 在迭代器函数中完成所有任务的节点,asynchronous和callback
- 如何限制/控制太多的asynchronous调用?
- Keystone js – populateRelated字段显示为未定义
- JS(node.js) – 如果我进行asynchronous调用,但不等待它完成将保证完成执行?
- 用node.js apirecursion地观察一个目录
- Node.js承诺和asynchronousexception
- NodeJS / Javascript – 使用承诺来处理图像收集,然后保存汇总的结果