我有一个连接到远程服务的 ES2015 类。
问题是我的代码在它的对象完成连接到远程服务器之前尝试访问这个类。
如果对象尚未完成初始化,我想确保方法不只是给出错误。
我的类中有很多方法依赖于连接的启动和运行,所以如果有一个单一的、易于理解的机制可以应用于所有方法,比如@ensureConnected 装饰器,那就太好了。
在这里摆弄:https ://jsfiddle.net/mct6ss19/2/
'use strict';
class Server {
helloWorld() {
return "Hello world"
}
}
class Client {
constructor() {
this.connection = null
this.establishConnection()
}
establishConnection() {
// simulate slow connection setup by initializing after 2 seconds
setTimeout(() => {this.connection= new Server()}, 2000)
}
doSomethingRemote() {
console.log(this.connection.helloWorld())
}
}
let test = new Client();
// doesn't work because we try immediately after object initialization
test.doSomethingRemote();
// works because the object has had time to initialize
setTimeout(() => {test.doSomethingRemote()}, 3000)
我正在使用 ES7 装饰器进行成像以执行测试以查看连接是否已建立,但我不知道如何执行此操作。