3

Angular 同期関数に到達する必要があります (もう一方は最初の関数の終了を待っています)。

たとえば、2 つのプロバイダー (MenuProvider と ShopProvider) があります。

MenuProvider にはメソッドがあります:

getMenuItemsForCurrentShop()

HTTP 経由で現在のショップのメニュー項目を取得します。

ShopProvider にはメソッドがあります。

setCurrentShopById(idShop:number)

現在使用しているショップをHTTP経由で設定します。

「setCurrentShopById(idShop:number)」の後に「getMenuItemsForCurrentShop()」を呼び出す必要があります。コールバックなしが理想的です。

4

2 に答える 2

2

問題を解決するために同期 ajax を作成することを考えるべきではありません。ブラウザがハングアップし (ユーザー エクスペリエンスが低下)、コードの実行がしばらく停止するためです。将来的syncには、どのブラウザーでも ajax がサポートされなくなる可能性があります。

この問題に対処するためだけに非同期の方法に従う必要があります。promise パターンを使用すると、問題を解決するのに役立ちます。.then 関数setCurrentShopByIdの成功関数で他の関数を呼び出す必要があります。getMenuItemsForCurrentShop

getMenuItemsForCurrentShop関数が promise オブジェクトを返すと仮定しました。

this.getMenuItemsForCurrentShop().then((response) => {
    this.setCurrentShopById(response.artists.items);
});
于 2016-01-17T15:26:44.807 に答える