Хочу сделать получение из XML дерева элементов по CSS запросам (NativeScript).
Использовать как ниже не очень хочется, т.к. получение элемента после другого элемента будет выглядеть просто ужасно.
cq('query', $elem => {
$elem.on('trigger', a => {
cq('query', $elem => {
$elem.on('trigger', a => {...})
});
})
});
Поэтому я решил через промис ждать ответ, а через прокси возвращать значение из .then()
, но столкнулся с тем, что:
.then()
асинхронен тоже.then()
возвращает промисКод:
function init(query) {
let promise = new Promise(on_done => {
get_component(parse_query(query), on_done);
// Функции, которые всё это обрабатывают. После выполняется on_done(результат)
});
let proxy = new Proxy(promise, {
get(pr, prop) {
pr.then(obj => {
if(typeof obj[prop] == 'function') {
let fn_proxy = new Proxy(obj[prop], {
apply(fn, t_arg, fn_args) {
return fn.apply(obj, fn_args);
}
});
pr.result = fn_proxy;
} else {
pr.result = obj[prop];
}
});
return pr.result;
}
});
return proxy;
}
Есть идеи, что можно сделать?
Временным (хотя наверное постоянным) решением было принято
async function init(query) {
let promise = new Promise(on_done => {
get_component(parse_query(query), on_done);
});
return await promise;
}
И использование:
let $elem = await cq('query');
$elem.on('trigger', a => {
let $elem2 = await cq('query2');
$elem2.on('trigger', a => {...});
})
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Собственно, понятно, почему barfoo() вернет bar
Начал изучение Vue JS, можете посоветовать какие-нибудь интересные задачки по Vue для наработки практики, желательно не супер сложные (тк