Adding custom implementation of Promise.withResolvers

This commit is contained in:
Selim Mustafaev 2024-03-16 17:26:18 +03:00
parent d0a0fcb105
commit 5abb6ce167
4 changed files with 15 additions and 4 deletions

View File

@ -1,5 +1,6 @@
import tdl from 'tdl'; import tdl from 'tdl';
import { platform } from 'node:process'; import { platform } from 'node:process';
import Utils from '../utils/utils.js';
class TGClient { class TGClient {
@ -91,7 +92,7 @@ class TGClient {
} }
}); });
let sendStatusTask = Promise.withResolvers(); let sendStatusTask = Utils.promiseWithResolvers();
this.sendTasks.set(message.id, sendStatusTask); this.sendTasks.set(message.id, sendStatusTask);
return await sendStatusTask.promise; return await sendStatusTask.promise;
} }

View File

@ -1,4 +1,5 @@
import { TGClient } from './tgclient.js'; import { TGClient } from './tgclient.js';
import Utils from '../utils/utils.js';
class TGProvider { class TGProvider {
@ -45,7 +46,7 @@ class TGProvider {
async getReport(number) { async getReport(number) {
try { try {
await this.tgClient.sendMessage(this.chat, number); await this.tgClient.sendMessage(this.chat, number);
let waitResponseTask = Promise.withResolvers(); let waitResponseTask = Utils.promiseWithResolvers();
this.checksMap.set(number, waitResponseTask); this.checksMap.set(number, waitResponseTask);
setTimeout(() => { setTimeout(() => {
waitResponseTask.reject(Error('TG report timeout')); waitResponseTask.reject(Error('TG report timeout'));

View File

@ -5,8 +5,8 @@
"main": "index.js", "main": "index.js",
"type": "module", "type": "module",
"scripts": { "scripts": {
"server": "node --js-promise-withresolvers --async-stack-traces --trace-warnings index.js", "server": "node --async-stack-traces --trace-warnings index.js",
"migration": "node --js-promise-withresolvers --async-stack-traces --trace-warnings migration.js", "migration": "node --async-stack-traces --trace-warnings migration.js",
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"author": "Selim Mustafaev", "author": "Selim Mustafaev",

View File

@ -133,6 +133,15 @@ class Utils {
let date = (new Date(...dateParams)).getTime(); let date = (new Date(...dateParams)).getTime();
return Math.floor(date/1000); return Math.floor(date/1000);
} }
static promiseWithResolvers() {
let resolve, reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
return { promise, resolve, reject };
}
} }
export default Utils; export default Utils;