意味不明なことを言っていたらすみません。
フロントでAPIのデータ取得を共通関数で作りたいと思ってます。
今まではAPIを読んだ処理内で受け取ったデータの処理、コントロールの制御はajaxStop内で行っていました。
今回他の画面でも同じ処理をしたい為、共通関数としてAPIのGETを作り、戻り値に値を設定、その後その値を表示処理したいと思っています。
しかし、表示処理→API処理の流れとなり、戻り値が空の状態で表示処理をしてしまい失敗。(非同期だからかな)
ならばと、グローバル変数に値をいれて、ajaxStop内で表示処理をしましたが、共通関数ではajaxStopが反応せず、ajaxStop内の処理が先に走り、その後API処理が走り失敗。
そもそもAPIで共通関数みたいなことが無理があるのでしょうか?
(タイマーは使いたくない)
ざっくりとしたイメージコード
index.ts
import { CommonInfo } from './common'; $(() => { let getinfo = CommonInfo(); $('#index').html('<p>'+getinfo+'</p>'); }); $(document).ajaxStop(function () { // ここではCommonInfo()が終わってからの処理が出来ない });
common.ts
: export function CommonInfo():string { let info : string; const getInfo= getJqXHR(); ←APIGET処理 $.when(getInfo) .done((jqInfo) => { info = jqInfo.text; }) .fail(() => { info = ''; }) .always(() => { return info; }); }
回答1件
あなたの回答
tips
プレビュー