私は1つのHttpClientサービスを持っています。これは、すべての残りの呼び出しを処理します。 残りの呼び出しを行う前に、iframeをロードしてから同じ関数呼び出しを続けます。ここで値を返す前に他のイベントが完了するのを待つ方法
public get(url, searchParams: URLSearchParams = new URLSearchParams(), headers: Headers = new Headers()) {
if (some condition) {
let iframe = this.createIframe();
return new Promise((resolve) =>
setTimeout(() => {
iframe.parentNode.removeChild(iframe);
resolve(this.doGET(url, this.getOptions(searchParams, headers)));
}, this.time_delay));
} else {
return this.doGET(url, this.getOptions(searchParams, headers));
}
}
createIframe方法である:
ここprivate createIframe() {
let iframe = document.createElement('iframe');
iframe.style.display = 'none';
this.createSomeUrl('').then(function (url) {
iframe.src = url;
});
document.body.appendChild(iframe);
return iframe;
}
、私はsetTimeout
を使用することにより、いくつかの時間のためdoGet()
コール待ちを作っていますが、それはiframe
が作業を終えている保証を与えるものではありません。その作業を終えるときiframe
更新される一つの変数があり
、私はiframe
はその変数をチェックすることによって、その仕事を終えていることを知っている、しかし、その時点で約束を返すのを待つかの方法を得る停止することができますか?
$ timeout関数を使用 – Dixit