小程序异步リクエストをどのように同期リクエストに変更するか
通常のミニプログラムのネットワーク要求は非同期要求であり、同期要求に直接変更することはできません。ただし ES6 の async/await を使用して同期効果を実現できます。
- 非同期リクエストの関数にasyncキーワードを付け加え、非同期関数として定義する。
- 非同期リクエストを行う場所でawaitキーワードを使用することで、非同期リクエストの結果の戻りを待つことができます。
- 非同期処理のコードをtry…catchブロック内に記述することで、発生する可能性のある例外を捕捉することができます。
async function request(url, data) {
try {
const res = await new Promise((resolve, reject) => {
wx.request({
url: url,
data: data,
success: resolve,
fail: reject
})
})
// 请求成功后的处理逻辑
console.log(res.data)
} catch (error) {
// 请求失败后的处理逻辑
console.error(error)
}
}
呼び出す際には以下のように使用します:
request('https://example.com/api', {key: 'value'})
なお、ミニプログラムの実行環境はシングルスレッドのため、同期リクエストを利用すると、ページ全体が固まってしまい、ほかの操作ができなくなります。そのため、実際の開発では、やはり非同期リクエストを利用することを推奨します。