async await解体新書

更新日 2023-08-09 13:43:47
javascript

まずはPromiseをおさらいする

1.Promiseの基本

// お約束の定義(関数)を引数に渡してインスタンスを生成する(引数のresolve, rejectもまた関数である)
const promise = new Promise(function(resolve, reject) {});
2.resolveするPromise

function funcPromise() {
    // お約束の定義を引数に渡してインスタンスを生成する(resolveする)
    const promise = new Promise(function(resolve, reject) {
        resolve("ok"); // function resolve(v) {return v;}のイメージ
    });
    // インスタンスを返却
    return promise;
}

// インスタンス生成
const promise = new funcPromise();

// then関数でresolveの結果を受け取る
promise.then(function(result) {
    console.log(result) // "ok"
});

以上を踏まえてasync await


// async関数は自動的にPromiseオブジェクトを返す(→だからawaitを外すとPromiseオブジェクトが返される)
// async関数の中でreturnすることはresolveすることを意味する
async function funcAsync() {
    setTimeout(function() {
        // "OK"をresolveする
        return "ok";
    }, 1000);
}

(async function() {
    // resolveの結果が返される
    const result = await funcAsync();
    console.log(result) // "ok"
})();