Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> post synchronicznie
sasiadstar
post 16.10.2020, 12:21:25
Post #1





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


Witam
Zastanawiam się czy istnieje możliwość tak skonstruowania funkcji przekazującej dane na serwer aby wyglądała jak poniżej i tak aby odbywało się to synchronicznie.


[JAVASCRIPT] pobierz, plaintext
  1. let answer = wyslijDane(dane);
[JAVASCRIPT] pobierz, plaintext




Go to the top of the page
+Quote Post
viking
post 16.10.2020, 12:40:22
Post #2





Grupa: Zarejestrowani
Postów: 5 855
Pomógł: 1003
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A co robi ta funkcja i czemu chcesz to zrobić synchronicznie?


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 16.10.2020, 12:46:48
Post #3





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Jeśli chodzi Ci o sam kod, to tak - w JS są słowa kluczowa async i await, które pozwalają pisać kod tak, żeby wyglądał jak synchroniczny:

[JAVASCRIPT] pobierz, plaintext
  1. async function foo() {
  2. console.log('Przed wysłaniem');
  3. let answer = await wyslijDane(dane);
  4. console.log('Po wysłaniu');
  5. }
[JAVASCRIPT] pobierz, plaintext

Jeśli wyslijDane() trwa 5 sekund, to console.log('Po wysłaniu') wykona się po 5-ciu sekundach.
Go to the top of the page
+Quote Post
sasiadstar
post 16.10.2020, 13:15:07
Post #4





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


Pobiera ustawienia z serwera bez tego ani rusz.
Nie jest to strona jako taka tylko automatyzacja pewnego algorytmu (żeby nie babrać się excelem)

await znam

[JAVASCRIPT] pobierz, plaintext
  1. async function getData(f) {
  2. let x = await $.ajax({
  3. type: 'GET',
  4. url: f,
  5.  
  6. async: false
  7. });
  8. let arr = x.split("\n");
  9.  
  10. if (!Array.isArray(arr)) {
  11. return [];
  12.  
  13. }
  14.  
  15. return arr;
  16.  
  17.  
  18. }
[JAVASCRIPT] pobierz, plaintext


ale wnerwia mnie takie coś
[JAVASCRIPT] pobierz, plaintext
  1. getData("php/settings.txt").then(function (e) {
  2. init(e);
  3. });
[JAVASCRIPT] pobierz, plaintext


wolałbym tak
[JAVASCRIPT] pobierz, plaintext
  1. init( getData("php/settings.txt"));
[JAVASCRIPT] pobierz, plaintext

Nie pytajcie dlaczego tak chcę.
Po prostu się zastanawiam czy tak się da.
Obczytałem się ale nic nie znalazłem sensownego.
Go to the top of the page
+Quote Post
SmokAnalog
post 16.10.2020, 13:26:54
Post #5





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


await działa z Promise, a Ty robisz synchronicznie Ajax, który blokuje wszystko inne. To nie jest to samo. Przerzuć się na Fetch API, albo pobaw się tak, żeby opakować Ajax w Promise.
Go to the top of the page
+Quote Post
viking
post 16.10.2020, 13:53:07
Post #6





Grupa: Zarejestrowani
Postów: 5 855
Pomógł: 1003
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ja bym się zastanowił że skoro to takie ważne dane czy nie można ich wstrzyknąć wcześniej od razu do strony zamiast doczytywać.


--------------------
Go to the top of the page
+Quote Post
sasiadstar
post 16.10.2020, 14:23:46
Post #7





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 19.06.2015

Ostrzeżenie: (0%)
-----


Cytat(viking @ 16.10.2020, 14:53:07 ) *
Ja bym się zastanowił że skoro to takie ważne dane czy nie można ich wstrzyknąć wcześniej od razu do strony zamiast doczytywać.

Można i nie raz tak robiłem, ogólnie wszystko mi działa tak jak chce, ale ilekroć przychodzi mi pisać z zapytaniami do serwera to się głowię czy nie da się tego jakoś uprościć bo te promise i inne mnie dobijają.
Jakoś nie mogę tego załapać.
Go to the top of the page
+Quote Post
SmokAnalog
post 16.10.2020, 14:31:17
Post #8





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


To poczytaj albo pooglądaj filmiki od podstaw. Mnie też zajęło trochę czasu, żeby to przyswoić, ale to nie jest takie trudne. A z async i await to naprawdę przyjemność.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.12.2020 - 00:09