LoginSignup
0
0

非同期処理Promiseの解説で分からなかったことをコメントに追加して理解する

Last updated at Posted at 2023-09-13

Javasctiptの勉強をしていて、非同期処理の所のサンプルコードの処理が理解できなかったので、コメントを追加しました。

function dummyFetch(path) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (path.startsWith("/success")) {
            /* ここでresolveの引数に渡されている値({body: `Response body of ${path}`})が
            .thenメソッドの第一引数にコールバック関数として定義されている関数の引数に渡される
            (ここではresponse)*/
                resolve({ body: `Response body of ${path}` });

            } else {
                reject(new Error("NOT FOUND"));
            /* ここでrejectの引数に渡されている値(new Error("NOT FOUND"})が
            .thenメソッドの第二引数にコールバック関数として定義されている関数の引数に渡される
            (ここではerror)*/

            }
        }, 1000 * Math.random());
    });
}
// `then`メソッドで成功時と失敗時に呼ばれるコールバック関数を登録
/* /success/data のリソースは存在するので成功しonFulfilledが呼ばれるというより、
第一引数に指定されているonFulfilled関数が呼び出されるという理解が正しい*/
dummyFetch("/success/data").then(function onFulfilled(response) {
    console.log(response); // => { body: "Response body of /success/data" }
}, function onRejected(error) {
    // この行は実行されません
});
// /failure/data のリソースは存在しないのでonRejectedが呼ばれる
dummyFetch("/failure/data").then(function onFulfilled(response) {
    // この行は実行されません
}, function onRejected(error) {
    console.error(error); // Error: "NOT FOUND"
});

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0