このツイートより勉強させていただいた。
https://twitter.com/clockmaker/status/1432490550825930752
(async () => {
const obj = {
then(r) {
setTimeout(() => { r(1); }, 1000);
},
};
const a = await obj;
console.log(a); // 1秒以後に「1」と出力される
})();
このようにPromiseがないにもかかわらず、awaitが動作する理由としては、JSの任意のオブジェクトにthen()メソッドがある場合、Thenableオブジェクトという扱いになり、awaitを使用できるためである。
jQueryの $.get も Thenable らしいので、awaitで待つことができるよう。
(async () => {
// await方式
const data = await $.get('hoge.json');
console.log(data);
})();