【发布时间】:2021-01-09 12:01:38
【问题描述】:
我想要一个静态 ES6 方法来简单地返回一个值而不是一个承诺。这就是我想要做的。
export default class Member {
static existingMember() {
var _existingMember;
// DB.findExistingMember() -> returns a promise
DB.findExistingMember().then(member => {
_existingMember = member
})
return _existingMember
}
}
// in mocha test
describe('some test', function () => {
const member = Member.existingMember()
it('has access to member', function() => {
// I want member to be available here instead of having to do member.then()
console.log(member)
foo.someFunction(member)
bar.someFunction(member)
})
})
【问题讨论】:
-
在您希望返回的变量
_existingMember的值设置为异步的情况下,您如何看待这可能? -
@Mitya 在设置点
then内,值没有解析吗? -
是的——但是到那时你的静态方法已经完成了它的流程并返回了一个值为 undefined 的变量。直到稍后异步流程完成时才分配其值。
-
@Mitya 这正是我要解决的问题。有没有办法设置
existingMember以在没有async-await的情况下从承诺内部返回值? -
不 - 这是一个矛盾。除非您使用生成器之类的东西做一些花哨的事情,否则函数只会同步返回一个值。否则,承诺(其中
async-await是一个抽象)或至少某种形式的回调是您唯一的途径。
标签: javascript node.js asynchronous mocha.js es6-promise