angular - În bucla Promise, cum să aștepți răspunsul cererii?
Încerc să creez un ciclu care trimite cereri.
Totuși, aș dori să aștept să primesc răspunsul la cerere înainte de a trimite următoarea. Cum pot proceda?
private start(): Promise<string> {
return new Promise((resolve, reject) => {
for (let j = 0, p = Promise.resolve(); j < count; j++) {
p = p.then(_ => new Promise<null>(res =>
setTimeout(() => {
if (j === (count - 1)) {
resolve();
} else {
this.http.get();
res();
}
}, 1000)
));
}
});
}
Mulțumesc pentru ajutor
Răspuns #1
Mulțumesc pentru că ajuți pe toată lumea. În sfârșit, am scris asta în funcție de răspunsul @Capricorn
private start(): Promise<string> {
return new Promise((resolve, reject) => {
for (let j = 0, p = Promise.resolve(); j < 10; j++) {
p = p.then(() => new Promise<null>((res) => {
this.get().then(() => res());
}));
}
});
}
private get(): Promise<string> {
return new Promise((resolve, reject) => {
setTimeout(() => {
alert('hello');
resolve();
}, 3000);
});
}
Răspunsul #2
poți încerca așa
async mainFunction () {
for(let i = 0; i < count; i++) {
await apiCallFunction();
// other code
}
}
apiCallFunction() {
return new Promise((resolve, reject) => {
this.http.get().subscribe(resp => {
resolve();
});
})
}
