Skip to content

Commit 86edb09

Browse files
committed
Wait for services to become available
1 parent d67fccf commit 86edb09

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

src/widget.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ export class NaoRobotModel extends DOMWidgetModel {
7979

8080
// Timeout after ~10 seconds
8181
for (let i = 0; i < 100; i++) {
82-
await sleep(100);
8382
if (this.qiSession.isConnected()) {
8483
this.connected = 'Connected';
8584
this.set('connected', 'Connected');
@@ -88,6 +87,7 @@ export class NaoRobotModel extends DOMWidgetModel {
8887
console.log('Connection successful after ', i / 10.0, ' seconds.');
8988
break;
9089
}
90+
await sleep(100);
9191
}
9292

9393
// Handle connection failure
@@ -106,6 +106,12 @@ export class NaoRobotModel extends DOMWidgetModel {
106106
}
107107

108108
private async createService(serviceName: string) {
109+
// Skip if service exists already
110+
if (this._services[serviceName] !== undefined) {
111+
console.log("Service " + serviceName + " exists.");
112+
return;
113+
}
114+
109115
this.changeStatus('Creating service ' + serviceName);
110116
const servicePromise = this.qiSession.service(serviceName);
111117

@@ -131,12 +137,23 @@ export class NaoRobotModel extends DOMWidgetModel {
131137
args: any,
132138
_kwargs: any
133139
) {
140+
// Wait for service to become available
141+
const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));
142+
143+
// Timeout after ~5 seconds
144+
for (let i = 0; i < 50; i++) {
145+
if (this._services[serviceName] !== undefined) {
146+
console.log('Service available after ', i / 10.0, ' seconds.');
147+
break;
148+
}
149+
await sleep(100);
150+
}
151+
134152
if (this._services[serviceName][methodName] === undefined) {
135153
this.changeStatus(methodName + ' does not exist for ' + serviceName);
136154
return;
137155
}
138156

139-
// let serviceResponse;
140157
this.changeStatus('Running method ' + methodName);
141158

142159
const servicePromise = this._services[serviceName][methodName](...args);

0 commit comments

Comments
 (0)