fork download
  1. asyncObject = {
  2. waiters: new Map(),
  3. elements: new Map(),
  4. getElement: async function (key) {
  5. if(this.elements.has(key)) return this.elements.get(key);
  6. return new Promise(res => this.waiters.set(key, [...(this.waiters.get(key) ?? []), res]));
  7. },
  8. setElement: function(key, value) {
  9. this.elements.set(key, Promise.resolve(value));
  10. if (this.waiters.has(key)) {
  11. this.waiters.get(key).forEach(res => res(value));
  12. this.waiters.delete(key);
  13. }
  14. }
  15. }
Runtime error #stdin #stdout #stderr 0.03s 16208KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
prog.js:6:79 SyntaxError: expected expression, got '?':
prog.js:6:79 se(res => this.waiters.set(key, [...(this.waiters.get(key) ?? []), res]));
prog.js:6:79 ............................................................^