我想制作一个延迟 100 毫秒的私有类函数,但我无法完全正确地理解语法。
下面是一个简短的 ES6 类,用于检查用户是否具有某些权限。我将结果缓存在
#permissions
中,这是一个数组。我只想公开一种方法:has
,它接受一个字符串参数并根据该权限列表检查它。
class Permission {
#permissions = [];
#started = false;
async init() {
this.#started = true;
const res = await axios.get('/user/permissions');
this.#permissions = res.data.permissions;
this.#started = false;
}
static #delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async has(perm) {
while (!this.#permissions.length) {
if (!this.#started) {
this.init();
}
await this.#delay(100);
}
return this.#permissions.includes(perm);
}
}
我试过的:
static
关键字时,linter 抱怨它应该是一个静态函数,因为 this
不在函数中。static
放回去时,linter 是无声的,但我得到一个运行时错误:TypeError: Receiver must be class Permission