Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: powtarzanie requesta do poki otrzymamy odpowiedz
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
dvdx95
siem prosil bym o pomoc nie wiem czy taki kod jest dobrze napisany

mianowicie
do request uzywam node request
  1.  
  2. //api request
  3. function(err, response){
  4. if(err) {
  5. return(err);
  6. }
  7. //a tutaj kod gdy !err
  8. }
  9.  


nie jestem pewien czy taki kod bedzie powtarzal zapytanie dopóki otrzyma response?? prosil bym o odpowiedz
SmokAnalog
Błąd to też odpowiedź, więc nic się nie będzie samo powtarzało przy błędzie. Musisz sam zrobić taką pętlę, jeśli chcesz wysyłać requesty do skutku (braku błędu).
dvdx95
  1.  
  2.  
  3. function retry(){
  4.  
  5. //api request
  6. function(err, response){
  7. if(err) {
  8. setTimeout(retry,500);
  9. return(err);
  10. }
  11. //a tutaj kod gdy !err
  12. }
  13.  
  14. }


jak myslisz takie cos zda egzamin?

albo takie questionmark.gif

  1.  
  2.  
  3. function retry(){
  4.  
  5. //api request
  6. function(err, response){
  7. if(err) {
  8. retry();
  9.  
  10. }
  11. //a tutaj kod gdy !err
  12. }
  13.  
  14. }
  15.  
SmokAnalog
Zerknij sobie na ten temat: http://stackoverflow.com/questions/1002446...re-using-jquery
dvdx95
tak wiem tylko tam jest ajax , ja nie chce ajaxa dlatego ze ten plik nie jest dla komunikacji na stronie www tylko jest to plik odpalany przez node.js
SmokAnalog
Ale zasada jest podobna. Musisz w jakiś sposób odpalić swoją funkcję zarówno na początku, jak i w przypadku błędu. Jesteś na dobrej drodze, kombinuj.
dvdx95
moze by tak zrobic


  1. setTimeout(function retry(){
  2.  
  3. //api request
  4. function(err, response){
  5. if(err) {
  6. retry();
  7.  
  8. }
  9. //a tutaj kod gdy !err
  10. }
  11.  
  12. },100);
SmokAnalog
A po co setTimeout? tongue.gif
dvdx95
oki powiedzmy ze jakos sie z tym uporalem , ale teraz mam kolejne pytanie

dostaje odpowiedz z api ktora powinna wygladac tak

  1. [{
  2. id: 42141231,
  3. owner: 12312321,
  4. }]

a dostaje takie cos
  1. [{
  2. //w srodku pusto :(
  3. }]


co zrobic w takim wypadku questionmark.gif

tzn chodzi mi oto jak to zrobic zeby wprzypadku dostania odpowiedzi z api (responsa) ktory jest nieprawidłowy(pusty) aby jeszcze raz wyslalo zapytanie
SmokAnalog
Jeżeli przyszła odpowiedź bez błędu, to możesz zakładać, że kolejna odpowiedź będzie identyczna. Sprawdź czy na pewno wszystko wysłałeś jak należy.
dvdx95
tzn tak te odpowiedzi przychodza w takiej formie

  1. [{
  2. id: 42141231,
  3. owner: 12312321,
  4. }]


chodzi mi jednak oto co zrobic gdyby sie tak zdazylo (a zdaza sie) ze przyjdzie taka odpowiedz

  1. [{
  2. //w srodku pusto :(
  3. }]


ktora niby przyszla ale jest pusta
SmokAnalog
Jesteś pewien? Co to za API, które wysyła złe odpowiedzi? Czy pobierasz jakieś nowe rzeczy i jak jest pusto to znaczy, że nic nowego nie ma?

Teoretycznie nic nie stoi na przeszkodzie, żeby po prostu zliczać elementy w tablicy z response i jeśli jest pusta, to znowu wysłać request. Zastanów się jednak czy na pewno o to chodzi.
dvdx95
napisalem Ci na PW.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.