javascriptの初心者なのですが以下のことをどう実装すればよいか、可能なのか教えてください。
localstorageにトークンを保存している状態なのですが、このトークンをとってきて、ヘッダーに付与にAPIに投げたいです。
javascript
1function fetchData(){ 2 3//①トークンを取得しにいく処理// 4 5//②取得したトークンをヘッダーに付与し、APIへのリクエストを作成する処理// 6 7}
簡単にこのような関数があり、トークンをとり、リクエストを作成します、
そしてこの関数はAPIへのリクエストを戻り値とします。
このとき、②で作成されるリクエストのヘッダーの中にトークンが埋め込まれているのが理想なのですが、
②の直下でログを出してみると、埋め込まれていません。
ただ、トークンを格納している変数を見てみると、しっかりとトークンが入っていました。
ログをみていると、①の処理が終わる前に②の処理が終了しているようでした。
そのため、①でトークンを取得する前に②でリクエストを作っていることから、理想とするリクエストができていませんでした。
ここでなのですが、どのようにして①の処理が終わったあとに②の処理を走らせることができるのでしょうか。
非同期関数についてしらべたのですが、どれも関数に対してasyncを使っていました。
①の処理や②の処理を関数化する必要があるのでしょうか。
どのあたりにawait やasyncをつけ、どの部分を関数化させるべきなのか意見ください。
以下により具体的な処理を記載します。(諸事情により全部は載せられなくて、すみません)
function fetchData(){ //①トークンを取得しにいく処理 const tokenRequest ={ scope:["http://XXXXX"] account:account } msalInstance.acquireTokenSilent(tokenRequest) .then((res) => { let accesstoken = res.accessToken //ここでトークンを取得しています。 } //②取得したトークンをヘッダーに付与し、APIへのリクエストを作成する処理 const headers = new Header(); const bearer = 'Bearer ${accsesstoken}'; headers.append("Authorization", bearer) const options = { method:"POST", header: headers }; //以下bodyの作成// }