我,这是我的片段:
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}
这是snippet如何调用方法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) => {
});
}
答案 0 :(得分:1)
在推送for-loop中的订阅内的数据之后,输入:
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});
});
答案 1 :(得分:0)
尽我所能,因为代码不是我的母语......
当您{HttpClient请求.subscribe()
时,您获得的数据顺序与服务器发送的顺序相同。所以,你有两个选择:
段:
ngOnInit() {
this.dummyRestApi.getDummyList().subscribe(
data => {
this.list = data.sort((a, b) => a - b);
}
);
}
Plunker: https://plnkr.co/edit/cphgtpO1PQeihiuL2iw7?p=preview
答案 2 :(得分:0)
ngOnInit() {
this.dummyRestApi.getDummyList().subscribe(
data => {
this.list = data.sort((a, b) => a - b);
}
);
}
&#13;
这是我的网络服务,我想我无法做到,因为数据是独立到达的,不在表格中。
如果时间可用,则Web服务响应为true,如果时间不可用则为false
$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
&#13;