как данные заказа после подписки - PullRequest
0 голосов
/ 24 апреля 2018

Я, это мой фрагмент:

plageHoraire(): void {
    let desordrePlage = new Array();
    console.log("analyse plage horaire .....");
    for (let i = 0; i < this.plageJour; i++) { //i est le cran
      this.isPlageReserver(this.debJ0H['debJour0H'], i).subscribe(data => {
 
        desordrePlage.push(
          {
            "afficheH": this.trancheDeb + i, "unavailable": data //on check si une des plage son indiponible
          }
        );
        console.log( {"afficheH": this.trancheDeb + i, "unavailable": data});
      });
    }
 
    var tab = [
      {afficheH: 13, unavailable: true}
     ,{afficheH: 9, unavailable: true}
     ,{afficheH: 10, unavailable: true}
     ,{afficheH: 12, unavailable: true}
     ,{afficheH: 8, unavailable: true}
     ,{afficheH: 14, unavailable: true}
     ,{afficheH: 11, unavailable: true}   
     ,{afficheH: 16, unavailable: true}
     ,{afficheH: 15, unavailable: true}
   ];
 
   tab.sort(compare); // on passe la référence à la fonction de comparaison
   console.log(JSON.stringify(tab));
 
   console.log("test réelle");
   console.log(desordrePlage+"DDDDDDDDDDDDD");
 
 
   desordrePlage.sort(compare);
   console.log(JSON.stringify(desordrePlage));
 
   function compare(a, b) {
    if (a.afficheH < b.afficheH) {
      return - 1;
    }
    if (a.afficheH > b.afficheH) {
      return 1;
    }
    return 0;
  }
 
 
 
  }

эта вкладка аккуратна после tab.sort, вкладка данных статическая, я хотел бы desordrePlage, но эти данные будут получены позже после подписки, этот desordrePlage пуст,как я должен сделать для ожидания данные здесь для заказа desordrePlage?

это console.log:

analyse plage horaire .....
heure.component.ts:96 [{"afficheH":8,"unavailable":true},{"afficheH":9,"unavailable":true},{"afficheH":10,"unavailable":true},{"afficheH":11,"unavailable":true},{"afficheH":12,"unavailable":true},{"afficheH":13,"unavailable":true},{"afficheH":14,"unavailable":true},{"afficheH":15,"unavailable":true},{"afficheH":16,"unavailable":true}]
heure.component.ts:98 test réelle
heure.component.ts:99 DDDDDDDDDDDDD
heure.component.ts:103 []

мои данные здесь, это console.log в цикле:

{afficheH: 8, unavailable: true}
heure.component.ts:79 {afficheH: 9, unavailable: true}
heure.component.ts:79 {afficheH: 11, unavailable: true}
heure.component.ts:79 {afficheH: 10, unavailable: true}
heure.component.ts:79 {afficheH: 12, unavailable: true}
heure.component.ts:79 {afficheH: 13, unavailable: true}
heure.component.ts:79 {afficheH: 14, unavailable: true}
heure.component.ts:79 {afficheH: 15, unavailable: true}
heure.component.ts:79 {afficheH: 16, unavailable: true}

Это фрагмент кода вызова метода plageHoraire ():

  isDayFree()//on vérifie si la journée est libre si true toute la journée dispo, si false on scan toutes les plage
  {
    //console.log(this._semaine.iBoucle + "==>" + this.debJ0H['debJour0H']);
    this.debJ0H['debJour0H'] + this.trancheDeb * this.parTranche; //le début de la journée
    this.finJour = this.debJ0H['debJour0H'] + this.trancheFin * this.parTranche; //on ajouter la fin de la journée pour toucheFin
    //console.log("DEBUT J=>" + this.debJ0H['debJour0H'] + "FIN J =>" + finJour);
    this._calendarService.dispoWbsRdv(this.debJ0H['debJour0H'], this.finJour).subscribe(data => {
      //on récupère les rendez-vous s'il y en a, s'il y en a pas il sera filtré avec le ngIF = 0
      console.log("array push plageHoraire---------------" + data);
      //data = false;
      //data = true la journée est libre, data = false la journée est pris afficher les plages d'horaire
      data ? this.plageHoraire() : this.pushFalse();//data = false journée dispo on passe à la suivante, data = true il faut analyser la journée
      //on affiche les plages d'horaires de la journée
      //  this._semaine.iBoucle++;//important d'ajouter cette incrémentation
    }, (error) => {
    });
  }
Мы можем посмотреть метод подписки () Спасибо за ответ:)

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Делать все возможное, так как код не на моем родном языке ...

Когда вы .subscribe() запрашиваете HttpClient, вы получаете данные в том же порядке, в котором их отправляет сервер. Итак, у вас есть два варианта:

  1. Сортировка на сервере перед возвратом результата. Очевидно, это не сработает, если у вас нет доступа к серверу.
  2. Сортировка значений после их получения, но перед их использованием. Смотри ниже

Отрывок:

ngOnInit() {
  this.dummyRestApi.getDummyList().subscribe(
    data => {
      this.list = data.sort((a, b) => a - b);
    }
  );
}

Plunker: https://plnkr.co/edit/cphgtpO1PQeihiuL2iw7?p=preview

0 голосов
/ 24 апреля 2018

ngOnInit() {
  this.dummyRestApi.getDummyList().subscribe(
    data => {
      this.list = data.sort((a, b) => a - b);
    }
  );
}

это мой веб-сервис, я думаю, что не могу этого сделать, потому что данные поступают автономно, нет в таблице.

ответ веб-службы истина, если время доступно, и ложь, если время не доступно

$sql="select * from calendar WHERE reserverStartH < $data->fin AND reserverEndH > $data->debut";
//echo json_encode($sql);die;
$pdo = Bdd::getIntance();
$sth =$pdo->prepare($sql);

$sth->bindValue(':reserverStart',$data->debut,PDO::PARAM_INT);
$sth->bindValue(':reserverEndH',$data->fin,PDO::PARAM_INT);

$sth->execute() ? $resultat="requete ok": $resultat= "problème requete"; //debug
$tb = $sth->fetchAll(PDO::FETCH_OBJ);

empty($tb) ?  $resultat=false : $resultat=true;//si résultat on envoie true, il faut détailler la plage d'horaire
echo json_encode($resultat);//true = affiche détail, false = on inique que toute la journée est libre
0 голосов
/ 24 апреля 2018

После того, как вы поместите данные в подписку, которые находятся в вашем цикле for, поместите это:

this.isPlageReserver(this.debJ0H['debJour0H'], i).subscribe(data => {


    desordrePlage.push(
      {
        "afficheH": this.trancheDeb + i, "unavailable": data //on check si une des plage son indiponible
      }
    );
     if (i == (this.plageJour - 1)) {   //ADD THIS LINE
        desordrePlage.sort(compare);    // ADD THIS LINE
     }                                 // ADD THIS LINE
    console.log( {"afficheH": this.trancheDeb + i, "unavailable": data});
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...