LINUX.ORG.RU

История изменений

Исправление dib2, (текущая версия) :

вообще вопрос уже риторический, решил простым коллбэком (схематично):

function getConn<T>(cb: (conn: Connection)=>Promise<T>): Promise<T> {
    var promise = new Promise<T>((resolve, reject)=> {
        pool.getConnection((err, conn)=> {
            if (err) reject(err);
            else {
                log.debug('connected ', conn.threadId);
                cb(conn).then((rv)=> {
                    log.debug('resolve release ', conn.threadId, rv);
                    conn.release();
                    resolve(rv);
                }, (err)=> {
                    log.error('reject release ', conn.threadId, err);
                    conn.release();
                    reject(err);
                });
            }
        });
    });
    return promise;
}

Исправление dib2, :

вообще вопрос уже риторический, решил простым коллбэком (схематично):

function getConn<T>(cb: (conn: Connection)=>Promise<T>): Promise<T> {
    var promise = new Promise<T>((resolve, reject)=> {
        pool.getConnection((err, conn)=> {
            if (err) reject(err);
            else {
                log.debug('connected ', conn.threadId);
                cb(conn).then((rv)=> {
                    log.debug('resolve release ', conn.threadId, rv);
                    conn.release();
                    resolve(rv);
                }, (err)=> {
                    log.error('reject release ', conn.threadId, err);
                    conn.release();
                    reject(err);
                });
            }
        });
    });
    return promise;
}

Исходная версия dib2, :

вообще вопрос уже риторический, решил простым коллбэком (схематично):

function getConn<T>((conn: Connection)=>Promise<T>): Promise<T> {
	var promise = new Promise<T>((resolve, reject)=> {
		pool.getConnection((err, conn)=> {
			if (err) reject(err);
			else {
				log.debug('connected ', conn.threadId);
				cb(conn).then((rv)=> {
					log.debug('resolve release ', conn.threadId, rv);
					conn.release();
					resolve(rv);
				}, (err)=> {
					log.error('reject release ', conn.threadId, err);
					conn.release();
					reject(err);
				});
			}
		});
	});
	return promise;
}