我正在努力使一个函数在完成所有API调用和for循环之后才返回数据。
getListingsImages(sessionID, mlsSearchCriteria){
this.http.get(this.laconiaBaseURL + "mls/search/" + sessionID + "?" +queryString).subscribe((data)=>{
listings = data['data'];
for (let listing of listings) {
postData.listingImageURL = imageBaseURL + listing.firstImage;
postData.listingPrice = this.formatter.format(listing.ListPrice).toString();
postData.listingMLSID = listing.listingKey;
postData.listingAddress = listing.FullAddress;
this.http.post(this.imageParserBaseURL, postData, {responseType: 'text'}).subscribe((data)=>{
this.slides.push({
data: data,
type: "image",
slideHeader: null,
duration: 10
});
});
}
});
}
注意我有两个http调用,我想等到两个清单都得到了,for循环迭代并发布数据。this. slides目前只是一个全局变量。
我试过使用回调,但我只是不太明白,所有的例子都不太适合我的情况。
如何使代码等待API调用和For循环的完成?
1条答案
按热度按时间oug3syen1#
您应该能够将可观察性转换为承诺,然后使用典型的async/await模式,如下所示:
这对可接受的行为做了一些假设。例如:
this.slides
的值的顺序与它们在第一个请求的数据中返回的顺序相同this.slides
之前,您可以等待所有结果返回imageParserBaseURL
的并发请求如果你需要更高级的行为,这将需要调整。你甚至可能需要返回一个可观察的而不是一个承诺。