async/await
に慣れるために、Chromeで次のコードを試しました。
async function f() {
return await $.get('/');
};
var result = f();
しかしresult
は結果(文字列)を保持しません。むしろ、再び待つ必要があるPromise
を保持します。このコードは応答文字列を私に与えます:
var response = await $.get('/');
Awaitを使用して関数から実際の応答文字列を返すにはどうすればよいですか?
どちらか
function f() {
return $.get('/');
};
async test() {
var x = await f()
console.log(x)
}
test()
または
f().then(function(res) {
console.log(res)
}
async/await
は、同じロジックを記述するもう1つの方法です。
await
とasync
は基本的にPromise
の上にある単なる構文上の砂糖です。最後にPromise
が付く場合でも、Promise
のように扱う必要があります。
_const response = f().then(() => { });
_
または、非同期関数内で呼び出す場合は、解決するまで待つことができます。
_async function main() {
const response = await f();
console.log(response);
}
_
私が使用したいパターンは、メインコードを自己実行非同期関数でラップすることです。そのため、awaitを使用できます。
_(async () => {
const result = await doSomething();
console.log(result);
})();
_
そのパターンを使用しても、他の方法ではキャッチされない可能性のあるエラーをキャッチするには、最後のcatch()
が必要です。
_(async () => {
// blah blah
})().catch(() => {});
_