-
IT café
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
nevemfel
senior tag
válasz lanszelot #9845 üzenetére
Html gombot onclick eventtel sokkal jobb kikérni
Most épp úgy teszek, mintha ezt a mondatot nem is láttam volna. Mindenkinek jobb lesz így.
Egyébként van ebben valami, de hogy "sokkal" jobb lenne, azzal vitatkoznék. Illetve attól függ, mit értesz az alatt, hogy "sokkal jobb"...
[ Szerkesztve ]
Rally against apathy draws small crowd
-
Bzozoo
tag
válasz lanszelot #9845 üzenetére
Körülbelül így néz ki.
A kódot ide is beteszem, ha esetleg a link eltörik egyszer:const timer = {
default: 0,
get() {
return this.default;
},
increase() {
this.default += 1;
},
reset() {
this.default = 0;
}
};
(() => {
render(timer.get());
document.addEventListener("click", handleButtons);
})();
function handleButtons(event) {
switch (event.target.id) {
case "startbutton":
handler.start();
break;
case "stopbutton":
handler.stop();
break;
case "resetbutton":
reset();
break;
}
}
const handler = {
interval: null,
start() {
if (this.interval) {
clearInterval(this.interval);
this.interval = null;
}
this.interval = setInterval(flow, 1000);
},
stop() {
clearInterval(this.interval);
this.interval = null;
}
};
function TimerTemplate({ hours = "00", minutes = "00", seconds = "00" }) {
return `${hours}h:${minutes}m:${seconds}s`;
}
function timeConverter(time = 0) {
const date = new Date(time * 1000).toISOString();
const tsring = date.substr(11, 8);
const [hours, minutes, seconds] = tsring.split(":");
return { hours, minutes, seconds };
}
function render(time) {
app.innerHTML = TimerTemplate(timeConverter(time));
}
function flow() {
timer.increase();
render(timer.get());
}
function reset() {
timer.reset();
render();
}
-
Sziasztok, segítsetek kérlek, mert már a hajamat tépem ettől az async témától. Egy egyszerű html oldalat akarok csinálni, ami gitlab API lekérdezéseket csinál. Annyi a cél, hogy listázza a merge requesteket. Ha bármi hiba van, akkor a táblázat végére írja ki, hogy ERROR, ha meg nincs semmi megjeleníthető, akkor OK-t. A probléma az, hogy a fetch miatt gyakorlatilag a kód végigcsorog mindenen, és előbb kezelődnek le a végső esetek, mint ahogy maga az API lekérdezés megtörténik.
Sikerült olyan megoldást találnom, amiben mindenhova odaírom, hogy await, és akkor jó, de ez gondolom nem optimális, mert így tippre az összes hálózati lekérdezés szekvenciálisan fut le, ami meg lassú lesz.
Csatoltam a működő minimál megoldást. Sajna kell a mappastruktúra, szimulálandó a szervert, szóval csak onedrive linket tudok adni egy zip-re: [link]
Tehát összegezve: azt szeretném, hogy minden async legyen, kivéve a végső OK-ERROR kiíratást, ill. hogy valami értelmesebb módon kellene megoldani a hibakezelést is.
I did nothing, the pavement was his enemy!
-
hiperFizikus
aktív tag
Nem vagyok járatos a témádban, de hátha el lehetne intézni 1 logikai változóval : legyen a neve BL1 a boolean után rövidítve . Ilyesmit gyakran használok .
let BL1 ; BL1= true ; // vagy false, ahogy alkalmasabb neked
listád eleje/:
ág
BL1= valami ;
ág
BL1= valami ;
ág
BL1= valami ;
...stb.utolsó ágad
if (BL1){}; // if_
/: listád vége .:
A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
válasz hiperFizikus #9855 üzenetére
Az a probléma, hogy asyncnál semmilyen változós megoldás nem lesz jó, mert előbb értékelődik ki a végén, mint ahogy az értékadás megtörténik.
I did nothing, the pavement was his enemy!
-
Bzozoo
tag
válasz hiperFizikus #9853 üzenetére
Hogy milyen alprogram minta?
-
-
hiperFizikus
aktív tag
Jaj, mit értetlenkedsz ...
Ez ni : Körülbelül így néz ki.
És ez ni:
const timer = {
default: 0,
get() {
return this.default;
},
increase() {
this.default += 1;
...stb.
A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
martonx
veterán
-
sztanozs
veterán
válasz hiperFizikus #9860 üzenetére
ez egy sima szamlalo (Counter), megosztasra meg ott a github. Csinalsz egy acountot, es az osszes publikus kododat meg tudod osztani. Mivel van egy csomo bot ami az osszes github repot lementi, igy akar ezek az agymenesek is beszivaroghatnak valami nagyobb kodbazisba (foleg, a valami feleszu AI rakja ossze a kodot).
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztanozs
veterán
válasz hiperFizikus #9865 üzenetére
pl npmjs.com, de githubon is lehet JS-only kodtarat csinalni.
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Úgy tűnik, sikerült megoldani. A trükk az volt, hogy a fetchek elé kellett a return, ill. egy globál
promises
változóba összegyűjtöttem agetDiscussion
visszatérési értékeit. Aztán még kellett egyPromise.all()
amain
függvénybe.async function main() {
await getTodos();
Promise.all(promises).finally(() => {
if (success) {
if (1 === table.rows.length) {
printMsg("OK");
}
} else {
printMsg("ERROR");
}
});
}I did nothing, the pavement was his enemy!
-
-
Lokids
addikt
Megtudja valaki mondani mi a gond ezzel a useEffectel?
Gombnyomás a start-ot true/false-ra állítja.
Szóval start gomb true-ra állít, onnantól futnia kéne, de!beállítja a másodpercet 59-re, de onnantól másodpercenként 1-et von le a minutes-ből. Pedig akkor a secounds már !==0 szóval nem kéne belépnie abba az if-be.
useEffect(()=> {
let interval = null;
if (start){
interval = setInterval(() => {
if (secounds === 0) {
if(minutes !== 0){
setSecounds(59);
setMinutes((perc) => perc-1)
} else {
let minut = ticking ? minutes : clocks.breakCount;
setMinutes(minut)
setSecounds(0)
setTicking(!ticking)
}
}else{
setSecounds((ms) => ms - 1)
}
},1000)
}else{
clearInterval(interval)
}
return () => clearInterval(interval)
}, [start])
[ Szerkesztve ]
If you chase two rabbits you will lose them both.
-
Lokids
addikt
vsCode.
Kicsit átírtam, most így néz ki, de a probléma, hogy figyelmen kívül hagyja az if-et, az megmaradt:
const [clocks, setClocks] = useState({
breakCount: 5,
sessionCount: 25,
})
const [szunet, setSzunet] = useState(true)
const [start, setStart] = useState(false)
const [secound, setSecound] = useState(25*60)
useEffect(()=> {
let interval = null;
if (start){
interval = setInterval(() => {
if (secound === 0){
if (szunet){
setSecound(clocks.breakCount * 60)
setSzunet(!szunet)
} else {
setSecound(clocks.sessionCount * 60);
setSzunet(!szunet)
}
} else if (secound > 0) {
setSecound((prev) => prev - 1)
}
},100)
}else{
clearInterval(interval)
}
return () => clearInterval(interval)
}, [start])
Az if (secound ===0) nem teljesül 1x sem. Pedig eléri a 0-át. Majd utána -1, -2 stb...
[ Szerkesztve ]
If you chase two rabbits you will lose them both.
-
Bzozoo
tag
Nézd meg console.log-gal, hogy mi történik az első esetben és a második esetben
https://snack.expo.dev/@bzozoo/second
https://snack.expo.dev/@bzozoo/start-and-secondAmúgy nem tudom, hogy mire kéne ez neked, de biztos, hogy másként is meg lehetne oldani.
[ Szerkesztve ]
-
Bzozoo
tag
Értem. Azt hittem, hogy valamilyen éles project része.
A hiba megértéséhez mutatok még egy kódot. Itt láthatod, hogy a counter 10 marad, tehát a setInterval indításakor a counter érték "ég" bele a függvénybe, tehát a függvény nem a counter aktuális értékével fut, hanem a régivel
https://snack.expo.dev/@bzozoo/countdown-useeffect-problem
Itt egy lehetséges jobb megoldás useRef használatával. Itt a counting függvénybe már mindig az aktuális érték kerül:
https://snack.expo.dev/@bzozoo/countdown -
hiperFizikus
aktív tag
Tudtok valami jobb linket a programban{szoftverben} való hibakeresgéléshez, mert egész nap csak egy hibát kerestem ? Mire megtaláltam, már örülni sem tudtam neki !
A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
martonx
veterán
válasz hiperFizikus #9882 üzenetére
Sajnos nem tudunk jobb linket, bármit is jelentsen a link a te szóhasználatodban.
Én kérek elnézést!
-
Bzozoo
tag
válasz hiperFizikus #9882 üzenetére
Az egyik 8-ast fordítva írtad 😃
-
válasz hiperFizikus #9885 üzenetére
Beszélgess a ChatGPT-vel. Legalább nem fogsz unatkozni és azonnal válaszol. Elvileg sosem fáj a feje...
But who is watching the guardians?
-
sztanozs
veterán
válasz hiperFizikus #9882 üzenetére
Es mi volt vegul a hiba (hogy tanuljunk belole)?
Egy pontosvesszo maradt el, vagy egy bezaro zarojellel volt tobb/kevesebb?JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
hiperFizikus
aktív tag
válasz sztanozs #9887 üzenetére
itt ebben
; if ( [,,,,].u(a1,'d°')[0] ){...} ;
nem volt kitéve a[0]
tag, ami nem megszakította a programom futását, hanem félrevitte, mindezt a 240 képernyő oldalnyi kódomban tette ! Aprólékos kellemetlen keresgélés után találtam csak meg .
A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
sztanozs
veterán
válasz hiperFizikus #9888 üzenetére
Hat igen - az implicit konverzio (illetve az implicit feltetel) nem nagy segitseg a hibak megtalalasanal.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
martonx
veterán
válasz hiperFizikus #9888 üzenetére
Kezded már kapizsgálni, miért erőltetem az olvasható kód írást?
Én kérek elnézést!
-
sztanozs
veterán
válasz hiperFizikus #9891 üzenetére
Erre valo a debugger - hogy kordaban tartsd a bokrot (es a valtozokat).
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Üdvözlet!
Volt nemrég itt a fórumon téma, hogy a JavaScript mindössze 1 szálon fut.
Néha ezt a tényt be is bizonyítja. Mégis érdekes, hogy ha van egy ilyen kódom:let value = getValue();
function getValue() {
return true;
}
myFunction(value);
.
.
.
.
function myFunction(x) {
//
}...akkor a console hibát dob vissza, miszerint: '
x is not definied
'.Kérdem én: Ha 1 szálon fut, akkor követnie kellene a műveleti sorrendet (fentről lefelé). Ilyen esetben miért nem történik meg? Nyílván
getValue();
nem csak egy egysoros kód, hanem egy feltételrendszer. Mégis a program az előtt futtatnámyFunction(x);
-et, mielőtt visszakapnávalue
agetValue();
értékét.
Ez az én olvasatomban azt jelentené, hogy párhuzamosan fut két function, és ha nincs visszatérő érték az egyikből addig, amíg a másik el nem jut arra a pontra, hogy használná, akkor hiba lesz az eredmény...But who is watching the guardians?
-
hiperFizikus
aktív tag
Csak úgy kutyafuttában ránéztem, nem ez-e a bajod vele:
let value = getValue();
function getValue() {
return true;
}
function myFunction(x) {
//
}
.
.
myFunction(value);
.
.
Vagyis csak azt hívhatod meg ami előtte már deklarálva van !A gázt is és a féket is egyszerre nyomni nem menő dolog !
-
martonx
veterán
Kérdés, hogy hova rakod a console-t?
Egyébként továbbra is így jsfiddle-el kellene szemléltetni a kérdést.Én kérek elnézést!
Új hozzászólás Aktív témák
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest