Нужно установить getter
для поля. Getter
должен делать запрос к базе данных. У мне нужно, чтобы getter
возвращал не promise
, а значение
console.log((new User(...)).proxy)
async function fetchProxy() {
return new Promise(function (resolve, reject) {
database.query("SELECT `url` FROM `proxys` WHERE `in_use` = 0 LIMIT 1", function (err, result) {
resolve(JSON.parse(JSON.stringify(result)).url);
})
});
}
В классе:
Object.defineProperties(this, {
proxy: {
_proxy: null,
get: function () {
if (!this._proxy) {
this._proxy await fetchProxy();
}
return this._proxy;
}
}
});
async возвращает промис, Вы пытаетесь получить результат через
(new User(...)).proxy
но это промис в состоянии pending, чтобы получить значение Вам надо:
new User(...).proxy.then(result => console.log(result))
вот рабочий пример:
const obj = {}
// как объявлять
Object.defineProperties(obj, {
property: {
async get () { // пример асинхронного гетера
const result = await promise()
return result
}
}
});
// как получить
obj.property.then(val => alert(val))
// промис для примера
function promise () {
return new Promise(resolve => {
setTimeout(resolve, 1200, 'Результат')
})
}
UPDATE: ThisMan:
зачем писать await? если в result промис, а не значение
Если у вас в геттере один промис, то его можно просто вернуть, чтобы он выполнился в obj.property.then
:
const obj = {}
// как объявлять
Object.defineProperties(obj, {
property: {
get: () => promise()
}
});
// как получить
obj.property.then(val => alert(val))
// промис для примера
function promise () {
return new Promise(resolve => {
setTimeout(resolve, 1200, 'Результат')
})
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
На сервере(tcp) стоит python скрипт, на модуле socket, не могу подключиться, открываю Console в гугл хром и получается такй вывод:
Задача в следующем: На странице есть несколько блоковПри наведении мыши на блок отправляется запрос на сервер и ответ вставляется в этот...
Занимаюсь разработкой веб-приложений уже около годаЗагрузку файлов на сервер, например, при регистрации в системе, делал таким образом, что...
Какое максимальное значение может быть в строке mysql? Например (name VARCHAR (??????????)